我的数据库中name
列的数据类似于
'Very big News'
'News'
'something else'
'New Nes'
'Fresh News'
'Something else'
现在给出一串单词,如何找到给定字符串中的任何单词是否包含在name
字段中?
例如:
我有一个字符串'super very news'
。我需要查看我的数据库,看看我是否有任何记录,name
字段包含'super'
或'very'
或'news'
或'super very'
或{ {1}}。
答案 0 :(得分:6)
更新。请参阅查询集docs here。
your_search_query = 'super very news'
qset = Q()
for term in your_search_query.split():
qset |= Q(name__contains=term)
matching_results = YourModel.objects.filter(qset)
这相当于:
matching_result = YourModel.objects.filter(Q(name__contains='super') |
Q(name__contains='very') |
Q(name__contains='news'))
在单个查询中生成(大致)以下SQL:
select * from your_model where name like '%super%' or name like '%very%' or name like '%news%'
答案 1 :(得分:0)
如果您的单词列表很小且很简单,您可以编写自己的查找表和索引器,否则您需要一个像OpenFTS这样的全文数据库: