改进Django搜索

2024-10-01 00:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下搜索:

titles = Title.objects.filter(title__icontains=search)

如果这是要查找的搜索:

Thomas: Splish, Splash, Splosh

我可以输入“Thomas”或“Thomas:Splish,Splash,Splosh”之类的内容,这样就行了。你知道吗

但是,如果我键入类似"Thomas Splash"的内容,它将不起作用。我该如何改进搜索来做类似的事情(还要注意,如果我们对单词进行拆分,逗号和其他非字母数字应该被忽略——例如,拆分的单词不应该是“Thomas:”、“Splish”,而是“Thomas”、“Splish”等


Tags: 内容search键入objectstitlethomasfilter单词
2条回答

这种搜索正开始突破django和ORM的界限。一旦达到这种复杂程度,我总是切换到一个完全为搜索而构建的系统。我喜欢lucene,所以我通常选择ElasticSearchSolr

请记住,全文搜索本身就是一个子系统,但确实可以为您的站点增加很多价值。你知道吗

由于Django模型使用的是数据库查询,所以没有什么神奇的地方可以做到。你知道吗

您可以将搜索拆分为非字母数字字符和包含所有单词的搜索对象,但这样做既不明智也不高效。你知道吗

如果你想要一些真正聪明的东西,也许你应该看看haystack:

http://haystacksearch.org/

相关问题 更多 >