如何在`solr`中查找仅包含搜索词的文档

时间:2016-09-29 16:07:51

标签: solr phrase

例如,我有一个solr集合,其中包含一个名为“key_phrase”字段的文档。

我知道很容易找到包含搜索查询中所有搜索词的所有文档。 (即在mm中使用edismax = 100%)

但是,我要求的是如何返回“ key_phrase ”仅包含搜索到的单词而不包含任何其他内容的文档。此“ key_phrase ”也是一个多值字段。

例如: 搜索查询:'儿童足球装备' 该查询将返回以下文档,其“ key_phrase ”字段包含:“ kids soccer ”。 它还会返回一个文档,其中包含两个“ key_phrase ”值,例如“ kids gear ”和“任何其他词”,因为其中一个不包含任何不在搜索查询中的单词。

另一方面,由于此文档包含“ boy ”,因此不会返回包含“男孩足球装备男孩”的文档。搜索查询。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用ShingleFilterFactory索引字段。

e.g。

<filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true"/>

您可以在此处参考ShingleFilterFactory

<analyzer>
  <tokenizer class="solr.StandardTokenizerFactory"/>
  <filter class="solr.ShingleFilterFactory"/>
</analyzer>

如果输入为

在:"To be, or what?"

要过滤的标记符:"To"(1), "be"(2), "or"(3), "what"(4)

出:"To"(1), "To be"(1), "be"(2), "be or"(2), "or"(3), "or what"(3), "what"(4)