代码之家  ›  专栏  ›  技术社区  ›  Manpreet Singh

我想实现一个同义词过滤器,它给我的结果如下:

  •  0
  • Manpreet Singh  · 技术社区  · 3 年前

    例如,如果我在搜索框中键入“US”,则它必须只返回同义词,如[“USA”、“美利坚合众国”、“United States”]。我不想在我的搜索结果中单独显示“美国”或“美国”

    我的同义词.txt文件 US=>美国,美国,美国

    enter image description here

    0 回复  |  直到 3 年前
        1
  •  0
  •   Abhijit Bashetti    3 年前

    我建议使用 SynonymFilterFactory 仅在索引时,而不是查询时。请为您的字段尝试以下字段类型。

    <fieldType name="text" class="solr.TextField">
    <analyzer type="index">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.SynonymFilterFactory" synonyms="mysynonyms.txt"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
      <tokenizer class="solr.KeywordTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    </fieldType>
    

    注意:如果已经定义了名为“text”的fieldType,请更改上述字段类型的名称。