首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solr -嵌套Edismax查询

Solr -嵌套Edismax查询
EN

Stack Overflow用户
提问于 2018-04-12 21:45:12
回答 1查看 518关注 0票数 0

我使用Solr (与pySolr一起)在我的数据库中搜索产品,返回产品、方面和facet.pivots:

代码语言:javascript
复制
result = solr.search(query_s, **{
    'rows': '24',
    'sort': formatted_sort,
    'facet': 'on',
    'facet.limit': '-1',
    'facet.mincount': '1',
    'facet.field': ['gender', 'material'],
    'facet.pivot': 'brand,series',
    'fq': '-in_stock:(0 OR 99 OR 100 OR 101)'
    })

query_s选择特定的字段,例如:brand:Target AND gender:Men's

我想将上面的查询与DisMax查询结合起来,这将允许我将上面的查询与指定字段上的全文搜索结合起来。我找到了一个文章,它演示了嵌套查询。我曾尝试这样做:

代码语言:javascript
复制
q: "gender:* AND _query_:"{!edismax qf=brand series}Summer""

出于某种原因,“塔吉特”将返回结果的目标品牌衬衫,但只有正确的大写。“夏天”是一系列的目标,不会返回任何结果。为什么我没有看到一张按相关顺序排列的文档列表?

我是否完全使用Dismax使事情复杂化了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-13 11:12:18

dismax解析器对于理解更“自然”的查询非常有用,即用户习惯于键入他们所寻找的内容以及大多数搜索引擎如何工作的查询。

在您的示例中,brand:Target AND gender:Men's是应该显示哪些文档的筛选器,而查询是用户键入的部分。通常,您希望在fq中使用过滤器,因为它们不影响分数(也就是说,它们是匹配字段值的确切值),以及q中的查询。

我假设Summer是用户在搜索框中输入的内容,这将为您提供如下信息:

代码语言:javascript
复制
q=Summer&defType=edismax&qf=series

但是,这假设series字段被定义为一个文本字段,该字段附带了一个分析器,因此这些值被适当地降低和分割。

如果您也有一个要搜索的description字段,则可以:

代码语言:javascript
复制
q=Summer&defType=edismax&qf=series^20 description

。。这将在seriesdescription字段中搜索series,但在series字段中给出20倍的权重。这是一种很好的方法,可以自然地促进文档中与更精确数据相匹配的文档。如果还包括brand字段,则可以让用户搜索“目标夏季”和类似的查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49806344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档