启用 solr suggest

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

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

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

会得到如下结果:
suggestRSS

添加一条评论 »本文共 8 条评论

  1. 确定能这样用吗?spellchecker 索引库能创建,却搜不出东西!

    回复

    • 确定可用。文章里最后一个截图就是我从自己测试环境中截取的,不是ps或拷贝来的

      回复

      • 我这也是,可以创建,但是却搜索不出来东西,我使用的IK的分词器!请问是怎么回事儿呢?谢谢!

        回复

  2. 字段应该设置成 stored=”true”

    回复

  3. 这个组件也要配置title,否则我的报空指针异常,我用的是3.6.1的

    回复

  4. 回复

  5. 中文能支持吗,需要什么配置

    回复

  6. 这个我在 4.0 下 配置一直不成功,要不就是5000条数据 输入一个 衣 才能提示一个 衣裙 的词

    回复

    • 设置一下searchComponent queryAnalyzerFieldType 就可以

      回复

  7. 请问textSpell是个什么类型

    回复

  8. 我这配置不成功啊 根本搜索不出来 spellchecker索引生成了 但就是搜索不出来

    回复

  9. 我这也不好使,没有生成 spellchecker 文件

    回复

  10. 生成了 文件,但是查询还是空白

    回复

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress · 闽ICP备18020075号