python - 如何使 Wagtail 搜索不区分大小写

标签 python django search elasticsearch wagtail

我使用 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')
]

但区分大小写。因此查询 howHow 将给出不同的结果。

我需要让我的搜索行为如下:

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

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)

关于python - 如何使 Wagtail 搜索不区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38622289/

相关文章:

python urllib2请求在前面添加换行符来发布数据

python - django 2 如何上传和显示图像?

Django url 模板标签给出 NoReverseMatch 错误

python - Django 并发获取和增量

Delphi SuperObject - 是否有一个(递归)搜索函数可以告诉在哪里可以找到值?

algorithm - 在 N 维空间中找到距离给定点最近的 N 个点

python - mysql.connector.errors.InternalError : Unread result found during UPDATE

python - 在 Python 中创建一个类的默认对象列表?

python - 为什么 __bases__ 不能在类主体中访问?

search - ElasticSearch-查询与第一个位置匹配的字段上的数据