0

我有一个 Solr 文档,其字段和值如下所示。 在此处输入图像描述

我试图获取此文档的已解析查询是“繁文缛节白色休闲鞋”-

        parsedquery: "+(DisjunctionMaxQuery((keywords_text_en:casual | (brandName_text_en_mv:casual)^3.0 | (name_text_en:casual)^2.0 | (categoryName_text_en_mv:casual)^4.0)) 
    DisjunctionMaxQuery((Synonym(keywords_text_en:boot keywords_text_en:shoe) | (Synonym(brandName_text_en_mv:boot brandName_text_en_mv:shoe))^3.0 | (Synonym(name_text_en:boot name_text_en:shoe))^2.0 | (Synonym(categoryName_text_en_mv:boot categoryName_text_en_mv:shoe))^4.0)) 
        DisjunctionMaxQuery((keywords_text_en:red | (brandName_text_en_mv:red)^3.0 | (name_text_en:red)^2.0 | (categoryName_text_en_mv:red)^4.0)) DisjunctionMaxQuery((keywords_text_en:tape | (brandName_text_en_mv:tape)^3.0 | (name_text_en:tape)^2.0 | (categoryName_text_en_mv:tape)^4.0)) DisjunctionMaxQuery((keywords_text_en:white | 
    (brandName_text_en_mv:white)^3.0 | (name_text_en:white)^2.0 | (categoryName_text_en_mv:white)^4.0)))~5 DisjunctionMaxQuery(((keywords_text_en:"casual (boot shoe) red tape white"~5)^2.0 | (brandName_text_en_mv:"casual (boot shoe) red tape white"~5)^6.0 | (categoryName_text_en_mv:"casual (boot shoe) red tape white"~5)^8.0 | (name_text_en:"casual (boot shoe) red tape white"~5)^4.0))",

根据我的理解,由于“categoryName_text_en_mv”字段中存在“休闲”一词,而其他查询字段中存在所有其他词,因此该查询应该能够找到它并在响应中返回。

但找到的文件数量为 0。有人可以帮我理解我在这里遗漏了什么吗?

提前致谢!

编辑 1 有趣的是,当查询是“繁文缛节白鞋”时,结果中就会出现预期的文档。只有当我在查询中添加“休闲”时,它才会失败。重要的观察是除了因果之外的所有其他词都存在于单个字段中。我怀疑 solr 无法跨多个字段匹配文档

4

2 回答 2

0

我只是重新索引了一个特定的文档,它为我解决了这个问题。看起来索引在 solr 端没有正确发生。

于 2022-03-02T09:32:04.937 回答
0

我建议您使用分析屏幕。选择下拉列表中的字段并将您正在搜索的值放在查询和索引端,以查看它的管道线是如何定义的。

https://solr.apache.org/guide/6_6/analysis-screen.html

于 2022-02-27T04:10:54.473 回答