例如,我有一个solr
集合,其中包含一个名为“key_phrase”字段的文档。
我知道很容易找到包含搜索查询中所有搜索词的所有文档。 (即在mm
中使用edismax
= 100%)
但是,我要求的是如何返回“ key_phrase ”仅包含搜索到的单词而不包含任何其他内容的文档。此“ key_phrase ”也是一个多值字段。
例如: 搜索查询:'儿童足球装备' 该查询将返回以下文档,其“ key_phrase ”字段包含:“ kids soccer ”。 它还会返回一个文档,其中包含两个“ key_phrase ”值,例如“ kids gear ”和“任何其他词”,因为其中一个不包含任何不在搜索查询中的单词。
另一方面,由于此文档包含“ boy ”,因此不会返回包含“男孩足球装备男孩”的文档。搜索查询。
答案 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)