在 Solr 中优先考虑以搜索字符串开头的搜索结果



我正在使用Solr 5.2,可能很快就会升级到8.2,以及edismax在选定字段中搜索字符串。 某些查询字段使用 ngram,因此包含搜索字符串的结果将显示在搜索中。 我希望以搜索词开头的匹配项的文档显示在搜索结果的开头。

我的第一次尝试是将字符串字段和文本 ngram 字段放在qf中并搜索字符串并从使用 boost 开始。 例如,如果搜索字符串是"lorem",我会使用:

q=(lorem*( or (lorem(

我还会对字符串字段使用助推器。 但是,ngram 匹配项似乎得分更高,因此以搜索词开头的匹配并不总是首先显示。

如何让搜索词位于搜索字符串开头的匹配项首先显示?

可悲的是,语法很尴尬,而且无法预测。从字面上看,您需要的是

q=({!prefix f=string_fied}lorem)^100 {!field f=ngram_field}electric&defType=lucene

注意:

  1. dismax(你通过引用qf暗示(不支持通配符,参考指南中有一条注释。

  2. 不要从{这里有一个惊喜开始复杂的查询。您甚至可以使用空格来启动它。

  3. 如果你想在这两个组中拥有多字段,请使用 CC_5 ,来模拟 dismax mutifield 行为。

祝你好运。你真的需要它。

顺便说一句,看看JSON查询DSL,它可能会避免这样的语法炸弹和一点更干净。

相关内容

  • 没有找到相关文章

最新更新