haystack solr搜索所有字段

时间:2011-06-16 05:46:32

标签: python django solr django-haystack

我有一个solr搜索引擎设置了多个字段,我希望能够搜索所有字段。

我可以执行.filter(content='string'),但这只会搜索document=True

中的任何字段

修改 此外,一些非document=True字段应用了不同的过滤器/标记器,因此我猜测将其添加到单个字段中无效...

3 个答案:

答案 0 :(得分:1)

您可以将所有包含它们的字段全部搜索到您的filtering query参数中,或者通过在查询字符串中命名它们(例如,如果您需要搜索“关键字”搜索“((field_1:keyword)OR” (field_2:keyword)或(field_3:keyword))“而不是”。

但是,通常最好将专用字段连接到搜索和搜索此单个字段所需的所有其他字段。您可以在架构中设置copyfield,以便在对文档编制索引时自动生成该内容。

答案 1 :(得分:1)

也许您可以使用'use_template'和显示所有字段的模板创建第二个字段。

我从未尝试过这样做,但这对我来说是个好方法。

OP评论后的编辑:

然后我最好的办法是使用子类SearchQueryset来添加方法或者创建一个循环函数并在SearchIndex中执行所有字段并执行以下操作:

qs = SearchQuerySet().filter(content=query)
for field in fieldlist:
   qs = qs.filter_or(**{'field':query})

我不知道这是否有效,但值得一试。

答案 2 :(得分:1)

@neolaser:我认为您可以通过使用DisMax搜索来实现您的目标。它允许搜索多个字段并为每个字段指定提升值。有关详细信息:

http://wiki.apache.org/solr/SolrRelevancyFAQ

http://wiki.apache.org/solr/DisMaxQParserPlugin