停用词和词组查询solr

时间:2019-06-28 07:27:21

标签: solr

我使用Solr 版本7.4 StopFilterFactory,并且我希望排除停用词,除非搜索词在双引号内。

例如,当我搜索"to be or not to be"时将不会检索任何文档。

我知道在较旧版本中,我可以使用‍ enablePositionIncrements="true",但现在已弃用。

我的managed-schema文件。

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="false">
    <analyzer type="index">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

要实现此目的,您可能需要有2个单独的字段。

定义字段1的字段类型在定义中具有stopwordfilterfactory。

在字段中定义不带StopFilterFactory的字段类型。

如果您没有双引号就不会搜索请求,则会在第一个字段上进行搜索。

当您有带双引号的搜索请求时,搜索将在第二个字段field2上执行。