【问题标题】:How to make SOLR search function return the result based on search input order如何使 SOLR 搜索功能根据搜索输入顺序返回结果
【发布时间】:2019-12-25 11:44:09
【问题描述】:

我使用 SOLR 对多值字段执行文本查询,但它没有按照输入的内容返回。我在字段上使用带有标准标记器的 edimax。

例如,我搜索文本“A B C”,但我得到奇怪的订单结果 结果#1:“A C B” 结果 #2:“A B C” 结果#3:“A C B”

我怎样才能让结果 #2 首先出现。

示例查询: localhost:8983/solr/test/select?defType=edismax&fl=text,score&mm=100%&q=A B C&qf=text

回应: { “文本”:“A C B”, “分数”:16.770645}, { “文本”:“A B C”, “分数”:16.770645}, { “文本”:“A C B”, “分数”:16.770645}, }

【问题讨论】:

    标签: solr solr-query-syntax edismax dismax


    【解决方案1】:

    The pf2 and pf3 parameters to the edismax query parser 允许您在其中术语按彼此顺序出现的文档中进行提升。这应该可以满足您的需求。

    否则,请考虑使用提升查询 bqComplex Phrase Query Parser

    bq={!complexphrase inOrder=true}text:"A B C"
    

    【讨论】:

    • 感谢您的及时回复,另一个问题,我必须同时使用 pf2 和 pf3 吗?我试过只使用 pf2,它可以工作
    • 不,它们在一次组合在一起的令牌数量上有所不同,即foo_barbar_baz vs foo_bar_baz
    • 我明白了,那么如果我的输入搜索只是使用相同示例“foo_bar”的 2 个单词,那么使用 pf3 将不起作用是吗?
    • 我猜当只有两个术语时它会起作用,但你可以同时指定它们并以不同的方式提升它们。
    • 最后一件事,您是否有任何关于如何在单个字段上使用提升的示例(基于我的示例“文本”)?一直在阅读 solr 参考指南,但没有找到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2019-04-03
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多