1

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

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

编辑 另外,一些非document=True字段应用了不同的过滤器/标记器,所以我猜想将它们添加到单个字段中是行不通的......

4

3 回答 3

2

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

我从来没有尝试过这样做,但这对我来说听起来不错。

编辑自 OP 评论:

然后我最好的选择是使用子类 SearchQueryset 添加一个方法或创建一个函数,该函数将循环和 SearchIndex 中的所有字段并执行以下操作:

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

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

于 2011-06-16T09:41:10.303 回答
1

您可以搜索所有购买的字段,包括它们全部到您的过滤查询参数中或通过在查询字符串中命名它们(例如,如果您需要搜索“关键字”搜索“((field_1:关键字)或(field_2:关键字)或(field_3:关键字))”代替)。

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

于 2011-06-16T09:36:57.840 回答
1

@neolaser:我认为使用 DisMax 搜索可以实现您想要的。它允许搜索多个字段并为每个字段指定提升值。更多细节:

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

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

于 2011-09-13T04:23:38.323 回答