(九)solr实现autocomplete功能
autocomplete 是什么相信你懂的,真的不知道的话,那就问百度吧
直接上配置
schema.xml
<field name="id" type="string" indexed="true" stored="true" required="true"/> <field name="title" type="text" indexed="true" stored="true"/>
类型定义:
<fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> <fieldtype name="text" class="solr.TextField"> <analyzer> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer>
solrconfig.xml
<searchComponent class="solr.SpellCheckComponent" name="suggester"> <lst name="spellchecker"> <str name="name">suggester</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">title</str> <float name="threshold">0.01</float> <str name="buildOnCommit">true</str> </lst> </searchComponent> <requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggester"> <lst name="defaults"> <str name="spellcheck">true</str> <str name="spellcheck.dictionary">suggester</str> <str name="spellcheck.count">10</str> </lst> <arr name="components"> <str>suggester</str> </arr> </requestHandler>
通过下面的方式,测试结果:
http://localhost:8983/solr/suggester/?q=%E8%BF%99%E6%98%AF
<?xml version="1.0" encoding="UTF-8"?> <response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">0</int> </lst>
<lst name="spellcheck"> <lst name="suggestions"> <lst name="这是"> <int name="numFound">2</int> <int name="startOffset">0</int><int name="endOffset">2</int> <arr name="suggestion"> <str>这是什么标题呢</str> <str>这是测试文章</str> </arr> </lst> </lst> </lst> </response>
更多信息可以参考:
http://wiki.apache.org/solr/Suggester?highlight=%28autocomplete%29