如何在solr中定义字段以获得最佳建议结果

lymnna71  于 2021-10-10  发布在  Java
关注(0)|答案(0)|浏览(292)

假设我有一个大约17000个药物名称的列表,我希望能够搜索到:[扑热息痛,布洛芬,哈那克斯,percocet,等等]。我希望能够在用户键入时从列表中推荐药物。
然而,正如我所知,当我键入“ibup”时,建议是“i-123 mibg”、“i-123 mini”、“i-131 mini”和“i-prin(口头)”等。。。。。我认为“布洛芬”即使不是最受欢迎的建议,也会是其中之一。我如何定义一个 fieldfieldType 因此,它可以很好地与建议者配合使用。
每个药物名称的字段类型是内置的默认文本\u general:

  1. <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
  2. <analyzer type="index">
  3. <tokenizer class="solr.StandardTokenizerFactory"/>
  4. <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
  5. <filter class="solr.LowerCaseFilterFactory"/>
  6. </analyzer>
  7. <analyzer type="query">
  8. <tokenizer class="solr.StandardTokenizerFactory"/>
  9. <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
  10. <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
  11. <filter class="solr.LowerCaseFilterFactory"/>
  12. </analyzer>
  13. </fieldType>

我正在使用fuzzylookupfactory从列表中建议药物名称。我的搜索组件和请求处理程序如下所示:

  1. <searchComponent name="suggest" class="solr.SuggestComponent">
  2. <lst name="suggester">
  3. <str name="name">mySuggester</str>
  4. <str name="lookupImpl">FuzzyLookupFactory</str>
  5. <str name="storeDir">fuzzyDirectory</str>
  6. <str name="dictionaryImpl">DocumentDictionaryFactory</str>
  7. <str name="field">drugName</str>
  8. <str name="suggestAnalyzerFieldType">text_general</str>
  9. <str name="buildOnStartup">false</str>
  10. <str name="buildOnCommit">false</str>
  11. </lst>
  12. </searchComponent>
  13. <requestHandler name="/suggesthandler" class="solr.SearchHandler" startup="lazy" >
  14. <lst name="defaults">
  15. <str name="suggest">true</str>
  16. <str name="suggest.count">10</str>
  17. <str name="suggest.dictionary">mySuggester</str>
  18. </lst>
  19. <arr name="components">
  20. <str>suggest</str>
  21. </arr>
  22. </requestHandler>

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题