启用 solr suggest

来源:互联网 发布:7u分享网络龙的传人 编辑:程序博客网 时间:2024/05/16 01:15

suggest 是搜索引擎一个方便的功能,对数据的关键字进行预测和建议,减少了用户的输入,大体的效果如下:

suggest幸运的是 solr 也提供了类似的功能,在该功能的基础上,配合 jQuery 或 kissy 的自动完成组件就可以实现类似上面的功能。
启动该功能的过程大体如下:
suggest 的功能依赖拼写组件,solr_home/data 目录下会有一个 spellchecker 目录,该目录用于存放 suggest 和 拼写检查的索引库,所以要先配置 spell 功能,配置如下:
1
2
3
4
5
6
7
8
9
<searchComponentname="spellcheck"class="solr.SpellCheckComponent">
   <strname="queryAnalyzerFieldType">textSpell</str>
   <lstname="spellchecker">
     <strname="name">default</str>
     <strname="field">title</str>
     <strname="buildOnCommit">true</str>
     <strname="spellcheckIndexDir">spellchecker</str>
   </lst>
 </searchComponent>
上述中的 field 用于指定主索引库中用于 spellchecker 索引的数据从主索引库的那个字段来获取。buildOnCommit 该属性为 true 时,当主索引库有提交指令时,将会自动把指定字段的内容送到 spellchecker  索引库,作为拼写检查和 suggest 使用。
接下来配置 suggest 的处理组件和请求类,如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<searchComponentclass="solr.SpellCheckComponent"name="suggest">
    <lstname="spellchecker">
        <strname="name">suggest</str>
        <strname="classname">org.apache.solr.spelling.suggest.Suggester</str>
        <strname="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookupFactory</str>
        <floatname="threshold">0.005</float>
        <strname="buildOnCommit">true</str>
    </lst>
</searchComponent>
<requestHandlerclass="org.apache.solr.handler.component.SearchHandler"name="/suggest">
    <lstname="defaults">
        <strname="spellcheck">true</str>
        <strname="spellcheck.dictionary">suggest</str>
        <strname="spellcheck.onlyMorePopular">true</str>
        <strname="spellcheck.count">5</str>
        <strname="spellcheck.collate">true</str>
    </lst>
    <arrname="components">
        <str>suggest</str>
    </arr>
</requestHandler>
这时候重新提交数据,会发现原先为空的 spellchecker 为空的索引库中有数据了,然后打开类似这样的网址(请将q=的值换成 title 字段中有的值)

http://localhost:8983/solr/suggest/?q=%E7%94%9F

会得到如下结果:suggestRSS


转载:http://www.solrcn.com/?p=573
0 0