我使用Solr (与pySolr一起)在我的数据库中搜索产品,返回产品、方面和facet.pivots:
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查询结合起来,这将允许我将上面的查询与指定字段上的全文搜索结合起来。我找到了一个文章,它演示了嵌套查询。我曾尝试这样做:
q: "gender:* AND _query_:"{!edismax qf=brand series}Summer""出于某种原因,“塔吉特”将返回结果的目标品牌衬衫,但只有正确的大写。“夏天”是一系列的目标,不会返回任何结果。为什么我没有看到一张按相关顺序排列的文档列表?
我是否完全使用Dismax使事情复杂化了?
发布于 2018-04-13 11:12:18
dismax解析器对于理解更“自然”的查询非常有用,即用户习惯于键入他们所寻找的内容以及大多数搜索引擎如何工作的查询。
在您的示例中,brand:Target AND gender:Men's是应该显示哪些文档的筛选器,而查询是用户键入的部分。通常,您希望在fq中使用过滤器,因为它们不影响分数(也就是说,它们是匹配字段值的确切值),以及q中的查询。
我假设Summer是用户在搜索框中输入的内容,这将为您提供如下信息:
q=Summer&defType=edismax&qf=series但是,这假设series字段被定义为一个文本字段,该字段附带了一个分析器,因此这些值被适当地降低和分割。
如果您也有一个要搜索的description字段,则可以:
q=Summer&defType=edismax&qf=series^20 description。。这将在series和description字段中搜索series,但在series字段中给出20倍的权重。这是一种很好的方法,可以自然地促进文档中与更精确数据相匹配的文档。如果还包括brand字段,则可以让用户搜索“目标夏季”和类似的查询。
https://stackoverflow.com/questions/49806344
复制相似问题