2009-10-21 154 views
2

我正在使用Lucene.Net創建一個網站來搜索存儲爲PDF的書籍,文章等。例如,我需要能夠根據作者姓名過濾搜索結果。這可以用Lucene完成嗎?或者我需要一個數據庫來存儲每個文檔的過濾字段?Lucene.NET搜索過濾器

另外,索引我的文檔的最佳方式是什麼?我將有大約50個文件開始,並定期我將不得不添加一堆文件到索引 - 可能是通過網絡表單。我應該使用數據庫來存儲文檔路徑嗎?

謝謝。

回答

2

下面是你需要做IMO什麼列表:從PDF

  1. 提取原始文本 - 請this question其用於此目的的建議iTextSharp
  2. 對於每個PDF文檔,創建一個Lucene.net文檔,其中包含幾個字段:作者,標題,文檔文本以及任何要搜索的內容。建議每個文檔還有一個唯一的ID字段。我建議你還將原始PDF文檔的路徑存儲在一個字段中。
  3. 索引所有文檔後,您將擁有一個可以按字段搜索的Lucene索引。
  4. 您可以通過重複步驟2來添加新文檔。脫機更容易 - 增量更新非常困難。
+0

優秀的答案,謝謝你簡化它。那麼,根本就不需要數據庫?如果我要脫機執行第2步,並說我讓我的用戶添加文檔,是否有助於將所有請求發送到數據庫,然後我可以有一個單獨的進程索引尚未編入索引的進程,並使用主鍵ID作爲索引中的唯一ID?你認爲有一個數據庫是有道理的嗎?如果將來我決定爲每個文檔提供一些「相關信息」或類似的內容,那麼數據庫會有幫助嗎? – Prabhu 2009-10-22 17:33:50

+1

如果您需要數據庫功能(如連接或複雜選擇),則需要一個數據庫。本文:http://www.lucidimagination.com/Community/Hear-from-the-Experts/Articles/Search-Engine-versus-DBMS解決了在數據庫中放置什麼與在搜索中放置什麼的問題發動機。數據庫可能是您需要顯示的其他信息的正確位置,而不是搜索。 – 2009-10-22 18:51:00

2

Lucene有幾個不同的分析器,可以清理噪聲並做「干擾」,當您想要進行全文搜索時這很有幫助,但您仍然需要將PDF本身存儲在某處。 Lucene.Net很高興在文件系統上建立一個索引,並且你可以添加一個字段到它構建的文檔中,這個文檔的路徑叫做「PATH」。