2009-12-15 90 views
2

Django的全文搜索你如何用的MySQL的InnoDB全文搜索配置Django的。 MySQL Myisam引擎支持全文搜索,但我將使用InnoDB。這是使用Sphinx的最佳方式嗎?如果你解釋你的配置,我將不勝感激。 (順便說一句,我也不知道它是如何與postgresql一起工作的。)與MySQL的InnoDB

回答

4

雖然它也可以被配置爲自動與MySQL,獅身人面像確實是一個單獨的工具來的MyISAM或InnoDB的。與MyISAM中的簡單全文搜索相比,它提供了更好的處理和性能,但是當然,價格是基於搜索和數據庫同時查詢條件變得困難。您可以使用SphinxSE(存儲引擎)來查詢並通過MySQL進行連接,但不如將其保存在數據庫引擎中,並且連接性能不佳。

否則,你可以拿MyISAM和InnoDB的混合方式。將所有的規範數據放在適當的InnoDB表中,並且只需使用MyISAM來存儲全文searchbait。對於正常操作,您只需觸摸InnoDB內容;只有在進行全文搜索時,您是否需要加入MyISAM表。然後,您必須確保在成功的事務處理之後,從插入到InnoDB表中的任何新文本更新MyISAM表。

儘管MyISAM中缺少事務支持,偶爾會使併發或錯誤條件中的數據不一致(顯然也適用於像Sphinx,Lucene等單獨全文存儲解決方案的危險),但這不是一個大問題因爲只有searchbait變得不一致,而不是你的實際數據。您也可以藉此機會以不同方式處理您的全文內容,例如通過應用簡單的詞幹,因爲MySQL本身並未實現。

PostgreSQL有其自身內置的全文基礎上,@@操作的東西。它並不完全符合Sphinx的速度,但在功能上比MyISAM FULLTEXT快很多(例如詞幹,字典,更好地處理相關性值),並且您仍然可以將其與其他查詢條件自由組合。

1

上次我正要做這樣的事情我想試試django-sphinx,所以這也可能是您的選擇。

2

可能要看看Haystack

搜索不必硬。 Haystack可讓您編寫一次搜索代碼並選擇您想要的搜索引擎。有了一個熟悉的API,它可以讓任何Djangonaut都能在家中感受到自己的感覺,並且允許您根據需要交換事物的架構,這就是搜索應該如何實現的。