1

我有appx。 2TB的文本,我想變成一個可搜索的數據庫,我通常會搜索數據庫中是否存在2-4個詞的表達式(例如,我可能會搜索以查看「這些詞是否是四個詞」 ,或者「連續三個字」出現在文本的任何地方)。爲Word搜索設置一個容易搜索的MySQL數據庫

這些搜索將經常發生,因此設置數據庫以儘可能少地處理是非常重要的。我也想盡可能地減少開銷,這樣我就可以降低我需要的數據庫服務器的數量。

有沒有人有任何建議,我應該如何設置這個數據庫?

例如我正在考慮做一個有組織的鏈接列表| id | word1 | word2 | (所有三個生物鍵),所以爲了表達「這些是四個詞」,我首先搜索「這些是」,然後我會搜索「是四個」,檢查是否有任何匹配的「這些是」是1個id比「四個」更低,然後對「四個單詞」做同樣的事情。但我認爲必須有一個更有效的方式來做到這一點。

編輯:我將使用這個數據庫的唯一的事情是做這些2-4個單詞完全匹配搜索,它是爲內部使用。我希望這個數據庫能夠做的就是讓我知道是否在我的所有信息文件中存在一個2-4字的表達式,並且僅此而已。

回答

2

有沒有人有建議作爲 我應該如何設置這個數據庫?

就我個人而言,我首先排除了使用MySQL's full-text search和每個開源的全文搜索引擎的可能性。有一個list of Open Source search engines on Wikipedia。我也排除使用Google Custom Search。哎呀,我甚至會在嘗試自己滾動之前考慮一個商業產品。

至少,研究他們的代碼可能會給你一些關於索引結構的想法。

如果您正在考慮在SQL中構建鏈表,那麼您可能想在構建一個很小的測試之前進行深入研究。我認爲這不會實際,但我可能是錯的。

真的很需要很多工作來進行全文搜索。 (考慮近距離搜索 - 在「許多失敗的方法」的3個詞中找到「有」)。重新創建這個輪子可能不是你最好的時間。

+0

我自己想這樣做的唯一原因是因爲我需要編碼的選項有幾個。因爲我知道我所有的搜索都是2-3個字的短語,而且我不需要訂購他們(我只需要知道他們是否存在)我不需要任何附近的標準全文搜索的功能。我使用這個數據庫來訓練一個神經網絡,我只需要知道神經網絡的結果是否與我有的任何訓練數據相匹配。感謝維基百科列表,我會看看其中的幾個引擎,以瞭解它們的結構。 – Alex