2016-11-17 21 views

回答

0

一個非常簡單的方法是在獲取它時解析每個文本文件,並創建一個包含句子和哪些文檔包含該句子的數據庫。也就是說,你必須是這樣的:

Sentences table 
Key - a unique sequential integer 
Hash - a 32-bit or 64-bit hash code created from the sentence 
Text - The full sentence text 

Files table 
Key - a unique sequential integer 
Name - the file's name 

Associations table 
FileKey 
SentenceKey 

所以,當你分析一個句子,創建哈希碼和查詢數據庫包含該哈希碼所有句子。可能有多個。如果沒有找到句子,或者如果遇到重複的散列碼(即散列匹配但句子文本不同),則在句子表中創建一個新條目。無論哪種情況,您都會在關聯表中輸入一個條目,並說「這個文件包含這個句子。」

您可以在解析的同時建立包含常用句子的文件列表。所有你需要做的就是在你找到一個匹配的時候輸出公共文件。

如果您想稍後查詢數據,可以使用SentenceKey對關聯表進行排序,排除只出現在一個文件中的那些句子,並最終得到重複項。

這是廣泛的筆畫。我隱藏了一些實現細節,但沒有涉及真正的繁重工作。

此外,您不必使用DBMS來執行此操作。如果你有足夠的內存,你可以用內存數據結構來完成。但是這個數據庫非常方便,因爲它保存了信息,並且它被設計用來做這樣的事情。

相關問題