1

在 synonyms.txt 中,我有:

you're => you are

当查看“因为你是我的”提供分析工具的内容时,它在“因为你是我的”中进行了扩展,这对于全文搜索来说很好,但对于带状疱疹来说是一个大问题。我想知道扩展是否没有放在最后,但是“你是因为我的”被扩展为“你因为是我的”,中间插入了以下单词。我还测试了“因为我的你是”,它被扩展为“因为我的你是”。

关于为什么会发生这种情况的任何想法?

这是分析工具的屏幕截图,使其 100% 清晰: 屏幕截图

4

2 回答 2

2

架构中的查询部分:

  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.DictionaryCompoundWordTokenFilterFactory" dictionary="wordlists/english-common-nouns.txt" minWordSize="5" minSubwordSize="4" maxSubwordSize="15" onlyLongestMatch="true"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
         possible with WordDelimiterFilter in conjuncton with stemming. -->
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>        
  </analyzer>

我只是让 WDF 进行标记化,你是 => 你是。在我定义的 synonyms.txt 中:

you re => you are

这不是最优雅的方式,但它有效,即按您需要的顺序存储令牌。

截图证明

于 2013-08-20T19:59:38.957 回答
0

您可以使用 Synonym-Expanding EDisMax Parser,它会在进行文本分析之前添加同义词:https ://github.com/healthonnet/hon-lucene-synonyms

于 2013-08-21T15:10:26.103 回答