`
longxia1987
  • 浏览: 35172 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Solr 使用入门介绍,以搜索论坛帖子为示例

 
阅读更多

版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原文出处, 即下面的声明.

原文出处:点击打开链接

原文还介绍了solr的部署,由于前面我已经有过一篇文章了,所以省略

为搜索论坛帖子应用设计索引结构:

字段 说明
id 帖子 id
user 发表用户名或UserId
title 标题
content 内容
timestamp 发表时间
text 把标题和内容放到这里,可以用同时搜索这些内容。

6、上面的索引结构告诉 solr,把下面的内容覆盖 E:\apache-solr-1.3.0\example\solr\conf\scheam.xml,(可以先备份这文件,方便以后看官方示例):

<?xml version="1.0" encoding="UTF-8" ?> 
<schema name="example" version="1.1">  
  <types>  
    <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>  
    <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>  
    <fieldType name="date" class="solr.DateField" sortMissingLast="true" omitNorms="true"/>  
    <fieldType name="text" class="solr.TextField" positionIncrementGap="100">  
      <analyzer>  
        <tokenizer class="solr.CJKTokenizerFactory"/>  
      </analyzer>  
    </fieldType>  
 </types>  
 
 <fields>  
  <field name="id" type="sint" indexed="true" stored="true" required="true" />  
  <field name="user" type="string" indexed="true" stored="true"/>  
  <field name="title" type="text" indexed="true" stored="true"/>  
  <field name="content" type="text" indexed="true" stored="true" />  
  <field name="timestamp" type="date" indexed="true" stored="true" default="NOW"/>  
  <field name="text" type="text" indexed="true" stored="false" multiValued="true"/>  
 </fields>  
 
 <!-- Field to use to determine and enforce document uniqueness.   
      Unless this field is marked with required="false", it will be a required field   
   -->  
 <uniqueKey>id</uniqueKey>  
 
 <!-- field for the QueryParser to use when an explicit fieldname is absent -->  
 <defaultSearchField>text</defaultSearchField>  
  
 <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->  
 <solrQueryParser defaultOperator="AND"/>  
  
 <!-- copyField commands copy one field to another at the time a document   
       is added to the index.  It's used either to index the same field differently,   
       or to add multiple fields to the same field for easier/faster searching.  -->  
<!-- -->  
  <copyField source="title" dest="text"/>  
  <copyField source="content" dest="text"/>  
</schema>  


7、重启 tomcat,然后手动在 E:\apache-solr-1.3.0\example\exampledocs 创建两个 xml 数据文件。分别保存为 demo-doc1.xml 和 demo-doc2.xml:

<?xml version="1.0" encoding="UTF-8" ?>  
<add>  
    <doc>  
        <field name="id">1</field>  
        <field name="user">chenlb</field>  
        <field name="title">solr 应用演讲</field>  
        <field name="content">这一小节是讲提交数据给服务器做索引,这里有一些数据,如:服务器,可以试查找它。</field>  
    </doc>  
</add> 


<?xml version="1.0" encoding="UTF-8" ?>  
<add>  
    <doc>  
        <field name="id">2</field>  
        <field name="user">bory.chan</field>  
        <field name="title">搜索引擎</field>  
        <field name="content">搜索服务器那边有很多数据。</field>  
        <field name="timestamp">2009-02-18T00:00:00Z</field>  
    </doc>  
    <doc>  
        <field name="id">3</field>  
        <field name="user">other</field>  
        <field name="title">这是什么</field>  
        <field name="content">你喜欢什么运动?篮球?</field>  
        <field name="timestamp">2009-02-18T12:33:05.123Z</field>  
    </doc>  
</add> 


8、提交数据做索引,到 E:\apache-solr-1.3.0\example\exampledocs,运行:

E:\apache-solr-1.3.0\example\exampledocs>java -Durl=http://localhost:8080/solr/update -Dcommit=yes -jar post.jar demo-doc*.xml
SimplePostTool: version 1.2
SimplePostTool: WARNING: Make sure your XML documents are encoded in UTF-8, other encodings are not currently supported
SimplePostTool: POSTing files to http://localhost:8080/solr/update..
SimplePostTool: POSTing file demo-doc1.xml
SimplePostTool: POSTing file demo-doc2.xml
SimplePostTool: COMMITting Solr index changes..

solr 1.4 运行这个例子是有这个问题。报错:

  1. org.apache.solr.common.SolrException:QueryElevationComponentrequirestheschematohaveauniqueKeyFieldimplementedusingStrField。

把 solrconfig.xml 中删除两个结点:也就是elevator组件

<searchComponent name="elevator" class="solr.QueryElevationComponent" >
    <!-- pick a fieldType to analyze queries -->
   <str name="queryFieldType">string</str>
    <str name="config-file">elevate.xml</str>
  </searchComponent>

  <!-- A request handler for demonstrating the elevator component -->
  <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
      <str name="echoParams">explicit</str>
      <str name="df">text</str>
    </lst>
    <arr name="last-components">
      <str>elevator</str>
    </arr>
  </requestHandler>





分享到:
评论

相关推荐

    solr资料以及问题汇总

    "Solr 使用入门介绍,以搜索论坛帖子为示例 - Bory_Chan.mht"提供了Solr的基础教程,通过实际的论坛帖子搜索场景,帮助初学者快速理解Solr的工作原理和使用方法。 "Solr Multicore 结合 Solr Distributed Searching...

    Solr In Action(中文版)_高清

    #### 二、为什么要使用搜索引擎? **2.1 搜索引擎的应用背景** - **数据管理和检索的需求:** 在现代社会,随着互联网的发展和数字信息爆炸式的增长,人们越来越依赖于高效的搜索工具来快速定位所需的信息。 - **...

    java开源包8

    使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...

    java开源包1

    使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...

    java开源包11

    使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...

    java开源包2

    使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...

    java开源包3

    使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...

    java开源包6

    使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...

    java开源包5

    使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...

    java开源包10

    使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...

    java开源包4

    使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...

    java开源包7

    使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...

    java开源包9

    使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...

    java开源包101

    使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...

    Java资源包01

    使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...

    JAVA上百实例源码以及开源项目源代码

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

Global site tag (gtag.js) - Google Analytics