假设您有一个查询:
(apples OR oranges) AND fresh location:cityGoesHere
默认情况下,haystack 使用自动转义数据的 auto_query 所以搜索将被记录为:
INFO: [collection1] webapp=/solr path=/select/ params={spellcheck=true&facet=on&fl=*+score&start=0&q=(\(apples+or+oranges\)+and+fresh+location\:cityGoesHere)&spellcheck.count=1&...
当然,Solr 会将“(”、“)”和“:”字符视为文字,因此不会进行分组,并且会根据默认字段搜索整个文本,而位置字段将被忽略
除了解析查询并将其中的不同部分分配给 AutoQuery、Raw、Exact 输入类型(如您认为合适),然后将 SearchQuerySet 链接在一起之外,是否有任何方法可以通过 haystack 实现高级 solr 搜索?
请您参考如下方法:
我最终主要使用 Raw haystack 输入创建了自己的输入。
唯一的缺点是此输入使用 Solr 特定语法,因此不能与其他搜索后端一起使用。
稍后编辑:
AltParser 也可以与 Extended Dismax 解析器结合使用。效果像黄油!
