代码之家  ›  专栏  ›  技术社区  ›  S Jayesh

如何在Apache Solr中使用首字母缩略词?

  •  2
  • S Jayesh  · 技术社区  · 7 年前

    我使用 text_general Solr提供的用于存储网页内容的配置字段如下:

    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
      <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.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
    

    字段:

    <field name="content" type="text_general" stored="true" indexed="true"/>
    

    说,在 synonyms.txt 我有一个条目:

    ABC=>Apple Ball Company
    

    如果我在上执行搜索 content 具有的字段 q=content:ABC 在我的数据上,我没有任何内容“ Apple Ball Company “一起。

    我得到所有单词的突出显示片段 Apple , Ball Company 在我的 所容纳之物 包含那些不在同一顺序甚至不在一起的单词。

    我只想突出显示首字母缩略词 ABC 和/或仅用于扩展“ 苹果球公司 “(如果这些单词按相同的顺序组合在一起)。

    1 回复  |  直到 7 年前
        1
  •  3
  •   drjz    7 年前

    存在以下问题 SynonymFilterFactory 多词同义词导致“sausagination”。这里有很好的解释: https://lucidworks.com/2014/07/12/solution-for-multi-term-synonyms-in-lucenesolr-using-the-auto-phrasing-tokenfilter/ 原因是过滤器只考虑标记的偏移量,而不考虑位置长度增量。这是同义词GraphFilter的地址,请参阅 https://lucene.apache.org/solr/guide/6_6/filter-descriptions.html#FilterDescriptions-SynonymGraphFilter

    所以使用 SynonymGraphFilter 而不是弃用的 同义词过滤器工厂 ,例如。 <filter class="solr.SynonymGraphFilterFactory" synonyms="mysynonyms.txt"/> .

    推荐文章