【问题标题】:Sorting of solr documents based on search term in solr基于solr中的搜索词对solr文档进行排序
【发布时间】:2019-06-16 18:48:14
【问题描述】:

我想根据搜索词对 solr 文档进行排序。例如搜索词是“stringABC”

那么结果的顺序应该是

字符串ABC, 字符串ABCxxxx, xxxxstringABCxxxx

solr 文档将包含很多文件,例如:标题、描述、路径、文章编号、产品代码等。

默认字段将包含多个字段,例如:标题、描述和路径。

因此,只有当搜索词满足默认字段中的任何字段时,才会返回 solr doc。

【问题讨论】:

    标签: solr


    【解决方案1】:

    使用三个字段 - 一个带有精确字符串,一个带有 EdgeNgramTokenizer,一个带有 NgramTokenizer。然后,您可以使用qf=field1^10 field2^5 field3 根据您希望它们之间的优先级如何对这些字段中的匹配进行评分。

    【讨论】:

    • 感谢您的快速回复@MatsLindh。要使用 qf 我应该使用 dismax 查询解析器吗?目前我正在使用标准查询解析器。
    • 正确。您仍然可以这样做,您必须明确搜索所有三个字段 (field1:stringABC^10 field2:stringABC^5 field3:stringABC)。不过,我建议使用 edismax 解析器。
    • 我的查询是 q.op=AND&q={!join+from%3DbaseProduct+to%3DbaseProduct}general_search_NGRAM:XXXX&qt=/select&fq={!tag%3DtagFeatures}(:)&fq=cq_commerceType:"article"&sort=rankingValue+desc&rows=12&start=0&facet.field=XXXXXX&facet.field={!ex%3DtagFeatures+key%3DfeaturesTagged}features&facet.field=XXXXX&facet.field=XXXXXXXXX&facet=true&facet.mincount=1&facet .limit=-1&group=true&group.field=baseProduct&group.ngroups=true&group.limit=1。收到所有文章后,我将对它们进行分组,并且我想根据搜索结果对组进行排序。我试过上面的选项 edismax 但它不起作用。
    • 你能看看我上面的评论吗? @MatsLindh
    • 您应该能够扩展您的q 参数,如上所示。当涉及到分组排序时,这将是一个不同的用例 - 先尝试一下,看看你是否得到了你想要的结果。
    猜你喜欢
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多