Skip to main content
 首页 » 编程设计

python之使用 solr 和 haystack 进行高级搜索

2025年05月04日13虾米姐

假设您有一个查询:

(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 解析器结合使用。效果像黄油!