我用字段索引了一个文件 -
- 内容(类型 :text_general、不可逆 :假、索引 :真、存储 :真(
- 类别(类型 :text_general、不可逆的 :false、索引的 :true、存储的 :true(
- 标题(类型 :text_general、不可逆的 :假、索引的 :真、存储的:真(
有一个包罗万象的复制场-
来源: *,
目标 :_文本_
现在当我搜索内容字段时,对于查询 - 苹果贸易,我得到 6057 个文档;
但是当我搜索 - 交易苹果时,我得到了 5878 个文档。
但是,当对catch-all字段执行相同的搜索时,我得到两个查询(6057 个文档(的结果相同。
我不明白这里的错误,因为我希望 solr 在内容字段上搜索时为两个查询提供相同的结果。
我正在使用-
- LuceneQParser
- 经典相似性
关于"内容"字段的两个查询:
- 苹果贸易
http://localhost:8983/solr/core_name/select?q=Content%3A%20Apple%20trade
- 交易苹果
http://localhost:8983/solr/core_name/select?q=Content%3A%20trade%20Apple
根据您刚刚添加到问题中的内容,假设 Lucene 查询解析器忽略:
后面的空格,查询Content:trade <default search field>:Apple
- 您没有在Content
字段中搜索第一个和第二个术语。
当您交换他们的位置时,您正在搜索Content:Apple <default search field>:trade
。
默认搜索字段在默认配置中_text_
。由于查询不同,因此可以假定字段中存在不同的内容(例如,未正确重新编制索引并在添加copyField
指令后清除索引(。
如果要使用轻松映射到用户输入的自由文本搜索,请改用 edismax 查询解析器 (defType=edismax
(,以q=apple trade
提供查询,并在qf=Content
中提供字段名称。