我有一个Solr文档,其字段和值如下所示。x1c 0d1x
而我试图点击以获取此文档的已解析查询是“繁文缛节白色休闲鞋”-
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”字段中存在单词-“casual”,而其他查询字段中存在所有其他单词,因此该查询应该能够找到这个单词并在响应中返回。
但找到的文档数为0。有人能帮助我了解我在这里遗漏了什么吗?
提前感谢!
Edit 1有趣的是,当查询是“red tape白色shoes”时,结果中会出现预期的文档。只有当我在查询中添加“casual”时,它才会失败。重要的观察结果是,除了causal之外,所有其他单词都出现在单个字段中。我怀疑solr无法跨多个字段匹配文档
2条答案
按热度按时间oo7oh9g91#
我建议您使用分析屏幕。在下拉列表中选择字段,并将您正在搜索的值放在查询和索引端,以查看它的管道是如何定义的。
https://solr.apache.org/guide/6_6/analysis-screen.html
ldioqlga2#
我只是重新索引了一个特定的文档,它为我解决了这个问题。看起来索引在Solr端没有正确发生。