【发布时间】:2011-06-16 05:46:31
【问题描述】:
我有一个设置了多个字段的 solr 搜索引擎,我希望能够搜索所有字段。
我可以做一个.filter(content='string') 但这只会搜索document=True 中的任何字段
编辑
此外,一些非document=True 字段应用了不同的过滤器/标记器,所以我猜这将无法将它们添加到单个字段中......
【问题讨论】:
标签: python django solr django-haystack
我有一个设置了多个字段的 solr 搜索引擎,我希望能够搜索所有字段。
我可以做一个.filter(content='string') 但这只会搜索document=True 中的任何字段
编辑
此外,一些非document=True 字段应用了不同的过滤器/标记器,所以我猜这将无法将它们添加到单个字段中......
【问题讨论】:
标签: python django solr django-haystack
也许您可以使用“use_template”创建第二个字段和显示所有字段的模板。
我从未尝试过这样做,但这对我来说听起来不错。
自 OP 评论后编辑:
那么我最好的选择是使用子类 SearchQueryset 添加一个方法或创建一个函数来循环和 SearchIndex 中的所有字段并执行以下操作:
qs = SearchQuerySet().filter(content=query)
for field in fieldlist:
qs = qs.filter_or(**{'field':query})
我不知道这是否可行,但值得一试。
【讨论】:
@neolaser:我认为你想要的可以通过使用 DisMax 搜索来实现。它允许搜索多个字段并为每个字段指定提升值。更多详情:
【讨论】:
您可以搜索所有购买的字段,包括它们全部到您的filtering query 参数中或通过在查询字符串中命名它们(例如,如果您需要搜索“关键字”搜索“((field_1:keyword)或(field_2 :keyword) OR (field_3: 关键字))" 代替)。
但是,通常最好有一个专用字段连接您搜索和搜索该单个字段所需的所有其他字段。您可以在架构中设置copyfield,以便在您的文档被索引时自动生成该内容。
【讨论】: