solr有个suggest模块,用来实现下拉提醒功能,就是输入了一个文本之后,进行文本建议查找的功能。
http://localhost:8983/solr/hotquestions/suggest?suggest=true&suggest.build=true&suggest.dictionary=mySuggester&wt=json&suggest.q=elec
这里可以看到有几个参数:
这个参数必须为true,表示我这次请求是suggest请求。
进行查询建议的文本
搜索组建中词典的名字,这个参数必须填写,你可以在请求体中带上这个参数,也可以在请求参数中带上。
suggest请求返回的suggest数。
这个不是必填的,如果suggester支持,用于内容过滤。
如果设置为true,这个请求会导致重建suggest索引。这个字段一般用于初始化的操作中,在线上环境,一般不会每个请求都重建索引,如果线上你希望保持字典最新,最好使用buildOnCommit或者buildOnOptimize来操作。
如果设置为true,会重新加载suggest索引。
如果设置为true,会重建所有suggest索引。
如果设置为true,会重新加载所有suggest索引。
<searchComponent name="suggest" class="solr.SuggestComponent"> <lst name="suggester"> <str name="name">mySuggester</str> <str name="lookupImpl">FuzzyLookupFactory</str> <str name="dictionaryImpl">DocumentDictionaryFactory</str> <str name="field">cat</str> <str name="weightField">price</str> <str name="suggestAnalyzerFieldType">string</str> </lst> </searchComponent>
suggester的名字,如果设置多个,可以在请求中指定。
查找方式的具体实现,有几种方式:
字典的具体实现,具体有几种方式:
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy"> <lst name="defaults"> <str name="suggest">true</str> <str name="suggest.count">10</str> </lst> <arr name="components"> <str>suggest</str> </arr> </requestHandler>
suggest的handler,主要设置了建议返回的默认个数,默认使用的suggest组件等。