我正在关注this教程,该教程介绍如何使用Solr对示例文档进行索引。如图所示,默认集合为“ gettingstarted”。现在,我正在尝试查询它。如图所示,共有52个条目:
但是,当我将q
参数替换为electronics
时,它将返回14个结果。但是,我什么也没得到。
当我用q
替换查询字符串cat:electronics
时,实际上得到了14个结果。但是为什么会这样呢? q=word
不应在出现的任何地方搜索word
?
答案 0 :(得分:0)
不,不是。您的假设:
q =单词不应该在出现的任何地方搜索单词吗?
是错误的。如果您使用word
作为唯一查询,仅此而已-您正在the default search field中搜索word
。它不会搜索所有可用文档中的所有可用字段。
还请注意,默认查询解析器假定您的查询在Lucene Query Syntax中。要处理更多的“自然”查询,可以use the edismax query parser。该查询解析器支持qf
参数,该参数告诉Solr要搜索哪些字段,而不必使用cat:electronics
语法。这样,您的示例将是q=electronics&qf=cat
。
在您提供的示例文档中,qf=series_t author name cat
可能是一个不错的值,可以在所有这些字段中搜索给定的查询。您还可以在字段名称后附加^<weight>
,以使不同字段中的匹配项具有不同的权重。 qf=name^10 cat
在name
中的匹配将是cat
字段中匹配的重量的十倍。