改进django搜索

时间:2013-04-26 20:50:24

标签: python mysql django search

我有以下搜索:

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

如果这是搜索:

Thomas: Splish, Splash, Splosh

我可以输入像#34; Thomas"或者"托马斯:Splish,Splash,Splosh"它会起作用。

但是,如果我输入类似"Thomas Splash"的内容,则无效。我如何改进搜索以做类似的事情(还要注意,如果我们分开单词,应该忽略逗号和其他非字母数字 - 例如,拆分的单词不应该是" Thomas:&# 34;," Splish,"而是" Thomas"," Splish"等。

2 个答案:

答案 0 :(得分:1)

这种搜索开始突破django和ORM的界限。一旦达到这种复杂程度,我总是切换到完全用于搜索的系统。我挖掘lucene,所以我通常会选择ElasticSearchSolr

请记住,全文搜索本身就是一个子系统,但可以为您的网站增添很多价值。

答案 1 :(得分:1)

由于Django模型正在使用数据库查询,因此您无法做太多魔术。

您可以使用非字母数字字符和搜索包含所有字词的对象来拆分搜索,但这不会是智能和高效的。

如果你想要一些非常聪明的东西,也许你应该看看干草堆:

http://haystacksearch.org/