3

我有一个自动完成框,它需要返回具有输入单词的结果。然而,输入词可以是部分的并且位于不同的顺序或位置。

例子:

数据库列(MySQL)中的值-

Expected quarterly sales
Sales preceding quarter
Profit preceding quarter
Sales 12 months

现在,如果用户键入quarter sales,那么它应该返回前两个结果。

我试过:

column__icontains = term  #searches only '%quarter sales% and thus gives no results
column__search = term  #searches any of complete words and also returns last result
**{'ratio_name__icontains':each_term for each_term in term.split()}   #this searches only sales as it is the last keyword argument

通过正则表达式的任何技巧或者可能是我在 Django 中缺少的东西,因为这是一种常见的模式?

4

1 回答 1

9

搜索引擎更适合这项任务,但您仍然可以使用基本代码来完成。如果您正在寻找包含“A”和“B”的字符串,您可以

Model.objects.filter(string__contains='A').filter(string__contains='B')

或者

Model.objects.filter(Q(string__contains='A') & Q(string__contains='B'))

但实际上,您最好使用配置很少的简单全文搜索引擎,例如 Haystack/Whoosh

于 2012-05-13T11:04:59.613 回答