gpt4 book ai didi

elasticsearch - 如何准确找到每个solr命中匹配的查询子句?

转载 作者:行者123 更新时间:2023-12-03 00:57:12 26 4
gpt4 key购买 nike

假设我有一个复杂的查询,其中包含许多子句。

查询子句可以分为“严格”子句和“一般搜索”,次要子句。

我想知道,不依赖相关性得分,哪个文档与严格部分完全匹配,即哪个文档符合所有确切要求,以及哪些文档因常规搜索而被视为热门。

查询的示例“严格”部分-

+((+field1.subf1:val1 ConstantScore(field1.subf2.subf3.subf4:"[* TO *]" field1.subf2.subf5:true))^10.0) ((title:"Lorem ipsum dolor sit amet")^0.05) (#((+field1.subf1:val1 ConstantScore(field1.subf2.subf3.subf4:"[* TO *]" field1.subf2.subf5:true))~100^10.0))

在Elasticsearch中, named queries允许我标记严格子句,然后针对每次命中验证满足了哪个子句。

如何在Solr中完成此操作?

非常感谢,
罗恩

{p.s. -我正在使用solr 5.3.1和solrj}

最佳答案

我当前的解决方案(希望获得反馈和健全性检查)

要确定每个匹配是否为“严格”,请执行以下操作:

  • 按原样执行完整查询
  • 并行地,执行一个查询,并添加一个包含严格子句(fq = $ {strict_cluases})的过滤器字段,仅检索文档id(fl =“id”)
  • 对于查询1中的每个匹配ID,如果它出现在查询2 ID中,我会将匹配标记为“严格”

  • 运行两个不同的查询并对它们进行比较会带来两个结果集过于脱节的风险(从而使比较变得毫无意义),但是我相信,如果它们具有相同的得分,开始和行参数,就可以缓解这种情况。

    关于elasticsearch - 如何准确找到每个solr命中匹配的查询子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42518518/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com