2013-04-26 60 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/