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

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

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

暂无答案!

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

相关问题