我有一个solr搜索引擎设置了多个字段,我希望能够搜索所有字段。haystack solr搜索全部字段
我可以做一个.filter(content='string')
但这只是搜索任何领域都在document=True
编辑 此外,一些非document=True
领域有不同的过滤器/应用,以便即时猜测这会不会增加工作tokenisers他们到一个单一的领域...
我有一个solr搜索引擎设置了多个字段,我希望能够搜索所有字段。haystack solr搜索全部字段
我可以做一个.filter(content='string')
但这只是搜索任何领域都在document=True
编辑 此外,一些非document=True
领域有不同的过滤器/应用,以便即时猜测这会不会增加工作tokenisers他们到一个单一的领域...
@neolaser:我想你可以通过使用DisMax搜索来实现。它允许通过多个字段进行搜索并为每个字段指定增强值。有关详细信息:
您可以搜索所有领域购买,包括他们全部到您的filtering query参数或命名它们在查询字符串(例如,如果您需要搜索“(关键字”搜索“((( field_1:keyword)OR(field_2:keyword)OR(field_3:keyword))“instea d)。
但是,通常最好有一个专用字段连接您需要搜索和搜索该单个字段的所有其他字段。您可以在架构中设置copyfield,以便在文档编入索引时自动生成该内容。
也许你可以用'use_template'和一个显示所有字段的模板创建第二个字段。
我从来没有试过这样做,但这听起来是一个很好的方法来做到这一点。因为OP评论
编辑:
然后我最好的选择是eaither sublass SearchQueryset添加一个方法或创建一个函数,将循环在你的SearchIndex各个领域,并做一些事情,如:
qs = SearchQuerySet().filter(content=query)
for field in fieldlist:
qs = qs.filter_or(**{'field':query})
我不知道这是否可行,但值得一试。
谢谢你的回答,我已经给出了正确的答案,因为它是“最近的“,但是我最终使用了dismax!所以谢谢你的回答,我确定这对其他人也有用! – neolaser 2011-09-13 23:20:27