1

我有以下搜索:

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

如果这是要查找的搜索:

Thomas: Splish, Splash, Splosh

我可以输入“Thomas”或“Thomas: Splish, Splash, Splosh”之类的东西,它会起作用。

但是,如果我输入类似"Thomas Splash"的内容,它将不起作用。我将如何改进搜索以执行类似的操作(另请注意,如果我们拆分单词,则应忽略逗号和其他非字母数字 - 例如,拆分单词不应为“Thomas:”、“Splish、 ”,而是“Thomas”、“Splish”等。

4

2 回答 2

1

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

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

于 2013-04-26T21:02:57.843 回答
1

由于 Django 模型使用数据库查询,因此您无能为力。

您可以通过非字母数字字符和包含所有单词的搜索对象来拆分搜索,但这并不聪明和高效。

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

http://haystacksearch.org/

于 2013-04-26T21:06:00.020 回答