Solr suggest配置

1.配置suggest

可实现的输入提示,分为两种 :单词提示 、短语提示。

单词提示使用的字段类型,分析过滤配置如下 (schema):

<fieldType class="solr.TextField" name="textSpell" positionIncrementGap="100">
    <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>

短语提示使用的字段类型,分析过滤配置如下:

<fieldType class="solr.TextField" name="textSpell">
     <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
</fieldType>

这里用的是短语提示.
然后在schema.xml 文件的fields节点里,新建一个索引字段,使用上面的短语提示[ textSpell ]。

<field name="suggestion" type="textSpell" indexed="true" stored="true"/>

如果我们需要对一个 “关键词” 同时查询多个列,那么我们可以使用CopyField进行列的合并,如下:

<copyField source="name" dest="text_autocomplete" maxChars="300" />

其中source 是要拷贝的字段,dest 是要合并到的字段 ,maxChars 是字数限制。

接下来,添加 suggest 的查询接口,在 solrconfig.xml文件里,添加如下:

<searchComponent name="suggest" class="solr.SpellCheckComponent">
     <lst name="spellchecker">
          <str name="name">suggest</str>
          <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
          <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
          <str name="field">suggestion</str>
     </lst>
</searchComponent>
<requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
          <str name="spellcheck">true</str>
          <str name="spellcheck.dictionary">suggest</str>
          <str name="spellcheck.count">10</str>
     </lst>
     <arr name="components">
          <str>suggest</str>
     </arr>
</requestHandler>

其中searchComponent是一个拼写检查的组件, 里面定义的属性信息包括:

name 当前组件的名称,

classname 拼写检查使用的类名,

lookupImpl 绑定这个搜索的对象,目前有两个类可以使用JasperLookup、TSTLookup(第二个效率更高),

field 是schema.xml里的字段名,

requestHandler 是查询接口,在 url 里访问使用的 。

  到这里 , 我们的suggest配置已经完成了, 接下来重启 Tomcat。刚配置好是查不出任何数据的,已经创建好的索引里没有刚配置的索引,这时候需要重新生成索引文件,把新配置的索引给生成数据。我的索引是连接的mysql数据库创建的,那么我需要重新导入一下数据,访问 dataimport?command=full-import,需要访问两次,如果还是不行,则把 {solr_hom}{multiCore}\conf 目录下的 dataimport.properties 文件删掉 ,重新访问导入数据试试看 。

  导入成功后可以访问select?q=: 来查询所有的索引数据,看看新配置的索引是否已经启用,如果没有新配置的索引,则重新执行导入数据创建索引 。

  重新生成索引成功以后,我们访问/suggest?spellcheck.build=true 对查询组件建立索引,然后访问/suggest?q={keyword}进行查询 ,keyword是查询的词语,如果查询不出来数据,访问/suggest?spellcheck.build=true&q={keyword}。如果一切配置正常 , 此时会查询出数据,但是仅仅是匹配查询可以了,并没有返回相近词、匹配结果数等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值