2013-04-26 63 views
1

我有以下的搜索:提高Django的搜索

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

如果这是一个搜索发现:

Thomas: Splish, Splash, Splosh 

我可以输入类似“托马斯”或“托马斯:水花,飞溅,Splosh“,它会工作。

但是,如果我输入类似"Thomas Splash"之类的东西,它将不起作用。我认为应如何改进搜索到做这样的事情(也注意到,如果我们分手的话,逗号和其他非字母数字应该被忽略 - 例如,分裂的话不应该是“托马斯”,“水花, “而是”Thomas“,”Splish“等。

回答

1

这种搜索开始推动django和ORM的边界。一旦达到这种复杂程度,我总是切换到一个系统完全是为了寻找建。我挖lucene,所以我一般去ElasticSearchSolr

请记住,全文搜索是一个子系统所有你们自己,但真正大量的价值添加到您的网站。

1

由于Django模型正在使用数据库查询,因此没有什么魔法可以做。

你可以通过拆分非字母数字字符,并包含所有单词搜索对象的搜索,但这个不会是聪明且效率倍增。

如果你想获得真正聪明的,也许你应该看看干草堆:

http://haystacksearch.org/