我想在SolR中找到一个短语,例如:(Ann OR Annie) is walking her dog
。我希望能够在SolR文档中找到它,如:
Ann is walking a dog
(已更改令牌)Ann is walking dog
(遗失标记)Ann is walking her wonderful dog
(附加标记)。 第一个可以(或多或少)使用ComplexPhraseQueryParser来完成,例如(her OR a)
(但它并不完美,因为我现在可能不是替代方案)并且它适用于第三类使用接近~
,但由于其中一个令牌丢失,因此第二种类型的查询根本无法工作。
第二个和第三个可以通过eDisMax结合最小匹配和ps2和ps3来实现,但是他们不会为Ann OR Annie
中所需的可变性工作,因为他们将整个查询解析为OR因此,拥有Ann AND Annie的文件会比只有其中一个的文章得分更高(我想平等对待它们)。当搜索的单词(Ann和Annie)在Solr(增量= 0)中处于相同位置时,我仍然不确定它是否运行良好。
完美的解决方案就像ComplexPhraseQueryParser一样,最小匹配。是否有可能仅通过查询来实现,或者我是否必须创建自己的解析器?