如何使 Wagtail 搜索不区分大小写
How to make Wagtail search case-insensitive
我使用 Wagtail 搜索:
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')
]
但是区分大小写。所以查询 how
和 How
会给出不同的结果。
我需要让我的搜索以这种方式运行:
当我输入 how
或 How
时,它应该 return
how to...
How to...
The way how...
THE WAY HoW...
换句话说,它应该在所有可能的情况下找到所有提及 how
的地方。
如何让它发挥作用?
P.S.: 我正在使用默认后端,如果需要我可以自由更改它。
使用 Wagtail 的 elasticsearch 后端,用 partial_match=True
索引的字段在 lowercase 中被标记化。因此,要完成不区分大小写的搜索,您需要做的就是将查询字符串小写:
results = s.search(query[u'question'].lower(), questions)
我使用 Wagtail 搜索:
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')
]
但是区分大小写。所以查询 how
和 How
会给出不同的结果。
我需要让我的搜索以这种方式运行:
当我输入 how
或 How
时,它应该 return
how to...
How to...
The way how...
THE WAY HoW...
换句话说,它应该在所有可能的情况下找到所有提及 how
的地方。
如何让它发挥作用?
P.S.: 我正在使用默认后端,如果需要我可以自由更改它。
使用 Wagtail 的 elasticsearch 后端,用 partial_match=True
索引的字段在 lowercase 中被标记化。因此,要完成不区分大小写的搜索,您需要做的就是将查询字符串小写:
results = s.search(query[u'question'].lower(), questions)