【问题标题】:Using PatternReplaceCharFilterFactory for multi-word synonyms将 PatternReplaceCharFilterFactory 用于多词同义词
【发布时间】:2017-01-30 22:50:19
【问题描述】:

我试图让同义词适用于具有空格的术语,这显然是 solr 的一个缺点。为了破解它,我尝试使用 PatternReplaceCharFilterFactory 用连字符替换空格,然后用连字符连接我的同义词:

<fieldType name="special_synonyms" class="solr.TextField">
<analyzer type="index">
  <tokenizer class="solr.KeywordTokenizerFactory"/>
  <filter class="solr.StandardFilterFactory"/>
  <filter class="solr.LowerCaseFilterFactory" />
  <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="100" />
  <filter class="solr.WordDelimiterFilterFactory"
          generateWordParts="1"
          generateNumberParts="1"
          catenateWords="1"
          catenateNumbers="1"
          catenateAll="0"
          preserveOriginal="1"
  />
</analyzer>
<analyzer type="query">
  <tokenizer class="solr.KeywordTokenizerFactory"/>
  <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="([/\s+])" replacement="-" />
  <filter class="solr.KStemFilterFactory"/>
  <filter class="solr.LowerCaseFilterFactory"/>
  <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"/>
  <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
</analyzer>

使用分析工具,当我输入我的多字词时,我得到了正确的同义词,但是当我运行查询时,它发现 0 个结果,除非我自己手动添加连字符。

【问题讨论】:

    标签: solr synonym


    【解决方案1】:

    Solr 的缺点是空间解析发生在分析器被调用之前。因此,您的 hack 不应该起作用。这正在修复中,但尚未准备好。关注的问题是SOLR-9185

    尝试将您的查询作为短语(“引用字符串”)发送。或者将Field Query Parser 与通过本地参数变量发送的文本一起使用。

    或者您可能有兴趣尝试免费的第 3 方Match Query Parser

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      • 2012-03-19
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多