- 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>
- managed-schema 配置
<fieldType class="solr.TextField" name="textSpell"> <analyzer> <tokenizer class="solr.KeywordTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> <field name="suggestion" type="textSpell" indexed="true" stored="true"/> <copyField source="item_companyname" dest="suggestion" maxChars="300" />
- 重启后访问/suggest?spellcheck.build=true 对查询组件建立索(返回如下)
{ "responseHeader":{ "status":0, "QTime":204}, "command":"build"}
- 查询结果/suggest?q=上海&rows=10&start=0(返回如下)
{ "responseHeader":{ "status":0, "QTime":1}, "spellcheck":{ "suggestions":[ "上海",{ "numFound":10, "startOffset":0, "endOffset":2, "suggestion":["上海黎晨电子商务有限公司", "上海黎沪家具有限公司", "上海黑桃互动网络科技有限公司", "上海黛熙化妆品有限公司", "上海黛艳玛化妆品有限公司", "上海黛莱化妆品贸易商行", "上海鼓特科学仪器有限公司", "上海鼓钱袋金融信息服务有限责任公司", "上海齐律包装材料有限公司", "上海齐跃会展服务有限公司"]}]}}
如果过程中遇到问题可以重新导入一次数据生成索引就可以了