【问题标题】:Different search term on different fields using edismax query parser in solr在 solr 中使用 edismax 查询解析器在不同字段上使用不同的搜索词
【发布时间】:2019-04-21 14:24:11
【问题描述】:

我有一个搜索多个字段的 solr 查询。为了增加召回率,我还做了通配符和模糊查询。我使用 edismax 查询解析器,因为我还必须使用 boost 函数。

这里是查询的相关部分:

defType=edismax&q= (wine AND company) OR  (wine* AND company*)^0.5  OR (wine* OR company*)^0.01 OR (wine~1 AND company~1)^0.02&qf=primary_tags^1 secondary_tags_s^0.2 merchant_name_s^0.5

现在,上面的查询在primary_tags^1 secondary_tags_s^0.2 merchant_name_s^0.5 的所有字段上搜索(wine AND company) OR (wine* AND company*)^0.5 OR (wine* OR company*)^0.01 OR (wine~1 AND company~1)^0.02,但我想要的是(wine AND company) 应该只在merchant_name_s^0.5(wine* AND company*)^0.5 OR (wine* OR company*)^0.01 上搜索primary_tags^1(wine~1 AND company~1)^0.02secondary_tags_s^0.2

实现这一目标的正确方法是什么?

【问题讨论】:

    标签: solr edismax


    【解决方案1】:

    edismax supports the full Lucene syntax.

    q=merchant_name:(wine AND company)^0.5 primary_tags:(wine* AND company*)^0.5 primary_tags:(wine* OR company*)^0.01 secondary_tags_s:(wine~1 AND company~1)^0.0004
    

    应该与您描述的查询相同。我已经将secondary_tags_s 部分合并为一个权重,并将primary_tags 子句分开,因为无论如何,默认行为是OR 在这些术语之间(取决于q.op)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 2013-09-06
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      • 2023-03-26
      相关资源
      最近更新 更多