2011-07-25 72 views
3

我需要一個輕量級的快速搜索解決方案。需要全文搜索替代方案的建議

今天我在布爾模式下使用Fulltext,其中每個searchword在結果中是強制性的。

該功能快速,工作,並符合要求。

但是一些全文限制http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html似乎是一個問題。該站點位於託管服務器上,並且我不允許更改mysql設置(例如,最小長度)

例如, 搜索必須能夠找到red11ab.cd哪些今天全文解決方案不能。

回答

0

想到的唯一事情就是將您的搜索建立在可以找到的出現次數的基礎上。實際的索引方法可能會有所不同,具體取決於數據庫提供的內容

假設數據庫大小不是問題,一個(非常)基本的方法是將每個單詞中的搜索blob(例如,stackoverflow上的一個帖子)分解爲每個單詞,對其進行規範化(刪除複數,刪除'邏輯'等單詞as等),然後將每個單詞作爲新記錄插入,並附上標識索引資源的ID。

統計ID的實例,按次數排序,更高的數字=更相關。

雖然不完全是我的領域,所以仔細考慮! =]

+0

所以基本上從頭構建一個自己的搜索功能邏輯?唷:) – Joseph

0

我建議你試試距離搜索:Levenshtein

或搜索 「的N-gram全文索引」。

0

我還沒有討論過它,但我讀了全文搜索的理論(至少與mysql有關)。

如果內存正確地爲我提供服務,您可以使用全文搜索來獲得您想要的內容,但是您需要配置(並且我認爲重新編譯)才能使其在較少數量的搜索字符上工作。我認爲它被設置爲4個字符的默認數量。您需要將其更改爲2個字符長度,並添加其他一些選項並測試您獲得的結果。

有人糾正我,如果這是不正確的。我寧願不把他扔在紅鯡魚身上。

1

使用Lucene,它經常與MySQL一起實現,並且它會更快更有效。

使用內置的FTS引擎是相對糟糕的做法,尤其是因爲它不適用於更可靠的InnoDB引擎。