2010-12-23 101 views
8

我寫的歸檔系統中的C#WinForm應用程序。該系統擁有龐大的數據庫,其中一些表格將擁有超過150萬條記錄。我需要的是一個索引這些記錄內容的算法。主要是這些文件是Microsoft Office,PDF和TXT文檔。任何人都可以幫忙無論是想法,鏈接,書籍或代碼,我欣賞它:)文本索引算法

例如:如果我在數據庫的某個文件夾中搜索單詞「國際」,我得到所有包含該單詞排序的文件某些標準,如相關性,修改日期...等

+1

爲什麼你不使用你的數據庫的索引設施,要做到這一點,而不是建立一個自己嗎? – 2010-12-23 01:31:50

+0

你想索引的每一個字每一個文件中,或者只是文件摘要/元數據? – 2010-12-23 01:33:41

回答

8

您需要創建,所謂的反向指標 - 這是在覈心搜索引擎是如何工作(一拉谷歌)。 Apache Lucene可以說是倒排索引的最佳庫。您有2個選項:

  1. Lucene.net - Java Lucene庫的.NET端口。

  2. Apache Solr - 一個使用Lucene庫構建的完整搜索服務器,可以輕鬆集成到.NET應用程序中,因爲它具有RESTful API。有幾個功能,如高速緩存,縮放,拼寫檢查等。您可以讓生活爲你使用優秀SolrNet庫應用到Solr的互動更容易散發出來的最箱。

  3. Apache Tika提供了一個非常廣泛的數據/元數據提取工具包,PDF文件,HTMLS,MS Office文檔等工作更簡單的辦法是到IFilter的API。有關更多詳細信息,請參閱this文章。

1

看起來你需要兩件事情。首先,你需要一個實際執行索引的系統。爲此,您可以像Mikos提到的那樣使用Lucene或Apache Solr。您還可能想要查看Sphinx這是另一個全文搜索引擎。您也可以使用數據庫中內置的全文功能。 SQL Server和MySQL都具有全文索引功能。與其他許多數據庫一樣。您需要的第二件事是從文件中獲取文本的方法。對於txt文件和HTML文件等內容,這很容易,因爲大多數全文搜索引擎會將它們作爲常規文本接受。對於更復雜的二進制文檔,如MS Word或PDF,您必須找到另一種方式來從中獲取文本。

0

據我,進行表分區,索引與ID的表,然後進行搜索。