2010-12-06 27 views
1

因此,我將在數據庫中存儲數百萬個與作者相關的句子。我需要能夠有效地搜索一個句子並返回作者。現在,我希望能夠在這句話中拼錯一個詞或忘記一兩個單詞,並且應用程序仍然能夠匹配(模糊化)。任何人都可以將我指向正確的方向嗎?谷歌如何做到這一點?因爲我可以在谷歌搜索歌詞,例如它會返回歌曲和歌詞?我期待着做同樣的事情?問題:需要在數百萬句子的數據庫中查找句子?

謝謝大家。

如果模糊使事情變得過於複雜,那麼我只能處理一個有效的句子搜索。

回答

0

全文搜索檢查inverted index數據結構。

這是搜索引擎是如何做到這一點

samples of code

UPDATE: 此外,如果你工作在一個分佈式系統檢查Hadoop - 對Goolge的的MapReduce的開源替代

0

在SQL Server或Oracle上進行全文索引將最適合您開箱即用。他們會變得模糊,使用詞根和其他聰明的東西。 我無法評論其他數據庫引擎,儘管快速谷歌顯示最多會有類似的東西。出於某種原因,我期望他們在模糊性方面更受限制。

0

事實上,模糊匹配並不是一件簡單的事情,儘管一些數據庫實現了某種模糊搜索,具體取決於所使用的方法和數據,結果可能會有所不同。下面是解釋了SQL模糊搜索的鏈接服務器

http://msdn.microsoft.com/en-us/magazine/cc163731.aspx

至於句子搜索,最DB引擎實現全文搜索/索引,你可能想看看......它配備了折衷的性能和存儲條款,但你可能想看看它

1

如果你用Java編寫,你可以試試Lucene

它不應該真的是「文件」和作者,而不是單個句子?

+0

Lucene可以與數據庫集成嗎? – Enrique 2010-12-06 03:53:08

0

如何谷歌做到這一點?

使用倒排索引。這些細節是專有的,但是你可以用最後一美元來下注,在內存中有很多複製和存儲索引等,以便他們可以處理他們每秒獲得的大量搜索請求。