我有以下搜索:
titles = Title.objects.filter(title__icontains=search)
如果这是搜索:
Thomas: Splish, Splash, Splosh
我可以输入像#34; Thomas"或者"托马斯:Splish,Splash,Splosh"它会起作用。
但是,如果我输入类似"Thomas Splash"
的内容,则无效。我如何改进搜索以做类似的事情(还要注意,如果我们分开单词,应该忽略逗号和其他非字母数字 - 例如,拆分的单词不应该是" Thomas:&# 34;," Splish,"而是" Thomas"," Splish"等。
答案 0 :(得分:1)
这种搜索开始突破django和ORM的界限。一旦达到这种复杂程度,我总是切换到完全用于搜索的系统。我挖掘lucene,所以我通常会选择ElasticSearch或Solr
请记住,全文搜索本身就是一个子系统,但可以为您的网站增添很多价值。
答案 1 :(得分:1)
由于Django模型正在使用数据库查询,因此您无法做太多魔术。
您可以使用非字母数字字符和搜索包含所有字词的对象来拆分搜索,但这不会是智能和高效的。
如果你想要一些非常聪明的东西,也许你应该看看干草堆: