我使用PHP获取用户搜索查询,并通过SOLR在特定字段"关键字"上运行它们,该字段基本上包含文档中所有数据的串联。
我还在这个查询中使用facets来进一步深入研究结果集。
我的问题:
- 我应该使用SOLR DisMax来解析ALL用户查询吗
- 将分面向下搜索视为不好的做法吗直接输入到带有关键字搜索的标准查询中,或者我应该使用filterqueries以过滤原始标准查询及其结果集
我会使用eDisMax
,它基本上更强大、更宽容(这意味着它通常不会为格式错误的查询返回错误)。
我强烈建议使用过滤查询来过滤结果(fq
参数),例如点击facet条目,主要是因为以下原因:
- 筛选查询不会影响solr分数
- 过滤器查询更快,因为通过过滤器缓存独立于主查询进行缓存
Dismax/Edismax允许您查询和增强多个字段,但在处理运算符及其支持方面存在一些限制
如果您在单个字段上进行查询,则标准查询解析器可以满足需求。
正如@javanna所提到的您应该始终尝试使用过滤查询来对关键字进行搜索,因为它允许使用缓存支持进行过滤。