混淆查询字词后,Solr搜索结果就会更改

时间:2020-01-06 16:00:16

标签: solr lucene solrcloud solr-schema solr-search

我已索引具有字段-

的文件
  1. 内容(类型:text_general,不可逆:false,索引:true,已存储:true)
  2. 类别(类型:text_general,不可逆:false,索引:true,存储的:true)
  3. 标题(类型:text_general,不可逆:false,索引:true,已存储:true)

具有全部复制字段-

来源:*,
dest:_text _

现在,当我搜索 Content 字段进行查询-Apple trade时,我会得到6057个文档;

但是当我进行搜索-交易Apple时,我得到了5878个文档。

但是,当在 catch-all 字段上执行相同的搜索时,两个查询都得到相同的结果(6057个文档)。

我不明白这里的错误,因为我希望solr在 Content 字段中搜索时为两个查询给出相同的结果。

我正在使用-

  • LuceneQParser
  • ClassicSimilarity

“内容”字段中的两个查询:

  1. 苹果贸易

http://localhost:8983/solr/core_name/select?q=Content%3A%20Apple%20trade

  1. 交易苹果

http://localhost:8983/solr/core_name/select?q=Content%3A%20trade%20Apple

1 个答案:

答案 0 :(得分:1)

根据您刚刚添加到问题中的内容,并假设Lucene查询解析器忽略了:后的空格,则查询为Content:trade <default search field>:Apple-您不会同时搜索第一个和第二个术语Content字段。

交换他们的位置时,您正在搜索Content:Apple <default search field>:trade

在默认配置中,默认搜索字段为_text_。由于查询是不同的,因此您可以假定字段中存在不同的内容(例如,在添加copyField指令后,如果没有正确地重新索引并清除索引)。

如果您想使用自由文本搜索来轻松映射到用户输入,请改用edismax查询解析器(defType=edismax),在q=apple trade中提供查询,并在{{ 1}}。