假设我有一个大约17000个药物名称的列表,我希望能够搜索到:[扑热息痛,布洛芬,哈那克斯,percocet,等等]。我希望能够在用户键入时从列表中推荐药物。
然而,正如我所知,当我键入“ibup”时,建议是“i-123 mibg”、“i-123 mini”、“i-131 mini”和“i-prin(口头)”等。。。。。我认为“布洛芬”即使不是最受欢迎的建议,也会是其中之一。我如何定义一个 field
及 fieldType
因此,它可以很好地与建议者配合使用。
每个药物名称的字段类型是内置的默认文本\u general:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
我正在使用fuzzylookupfactory从列表中建议药物名称。我的搜索组件和请求处理程序如下所示:
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">mySuggester</str>
<str name="lookupImpl">FuzzyLookupFactory</str>
<str name="storeDir">fuzzyDirectory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">drugName</str>
<str name="suggestAnalyzerFieldType">text_general</str>
<str name="buildOnStartup">false</str>
<str name="buildOnCommit">false</str>
</lst>
</searchComponent>
<requestHandler name="/suggesthandler" class="solr.SearchHandler" startup="lazy" >
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.count">10</str>
<str name="suggest.dictionary">mySuggester</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
暂无答案!
目前还没有任何答案,快来回答吧!