【问题标题】:How to make Wagtail search case-insensitive如何使 Wagtail 搜索不区分大小写
【发布时间】:2016-12-02 00:21:22
【问题描述】:

我使用 Wagtail serach:

query = self.request.query_params
questions = models.Questions.objects.filter(
    answer__isnull=False,
    owner__isnull=False).exclude(answer__exact='')
s = get_search_backend()
results = s.search(query[u'question'], questions)

这就是我为我的Questions 模型设置索引的方式:

search_fields = [
    index.SearchField('question', partial_match=True, boost=2),
    index.FilterField('answer'),
    index.FilterField('owner_id')
]

但它区分大小写。所以查询howHow 会给出不同的结果。

我需要让我的搜索行为这样:

当我输入howHow 时,它应该返回

how to...
How to...
The way how...
THE WAY HoW...

换句话说,它应该在所有可能的情况下找到所有提及how

如何让它发挥作用?

P.S.:我使用的是默认后端,如果需要,我可以随意更改它。

【问题讨论】:

  • 您能分享一下您是如何为您的Questions 模型设置索引的吗?

标签: python django search elasticsearch wagtail


【解决方案1】:

使用 Wagtail 的 elasticsearch 后端,以partial_match=True 索引的字段在lowercase 中进行标记化。因此,要完成不区分大小写的搜索,您只需将查询字符串小写即可:

results = s.search(query[u'question'].lower(), questions)

【讨论】:

  • 那么大写字母开头的问题就找不到了
  • 有没有办法在 settings.py 文件中开启不区分大小写的搜索?也许像这样:WAGTAIL_SEARCH_CASE_INSENSITIVE = True
猜你喜欢
  • 1970-01-01
  • 2020-01-30
  • 2021-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-15
  • 2013-09-26
相关资源
最近更新 更多