2015-12-10 78 views
1

我已經在.NET堆棧中創建了文檔存檔管理系統。搜索功能目前是有限的。當用戶進行搜索時,選擇相關客戶並查詢「標題」,「定義」或「日期」字段。他們的記錄太多(約500萬)。 (BTW數據庫是Sql Server。)需要有關索引文檔的建議(office docs,pdf)

我們將pdf或office文件附加到記錄中。如果用戶附加文件進行記錄,我將文件保存到文件系統並將文件路徑寫入數據庫。如果查詢結果中有附加文件,用戶可以打開文檔點擊路徑。

我們想索引附加文檔並在索引中搜索。但我需要爲每個客戶創建索引。

總結我想要的;

  • 索引PDF,MS Office文檔和圖像。
  • 爲每個客戶創建索引。 (我想我需要這樣做,但如果你有任何想法,請建議)
  • 在關鍵字索引中搜索。

我知道有科技可以做到這一點。 Lucene/Solr,獅身人面像等。但我感到困惑,需要一個建議。

回答

3

這聽起來像你探索的選項:

  • 的壓縮工具(轉換文件爲純文本)
  • 一個搜索工具(以使該純文本搜索)
  • 多租戶策略(用於管理多個客戶,這些文字的集合)

我可以給你在Apache的一些指針堆棧(因爲你的男人tioned的Lucene/Solr的在您的文章):


提取

廣泛使用的開放源碼文件提取工具是Apache Tika(可處理PDF文件和MS Office文檔among others

你提到你要索引圖片哪個在文檔管理上下文中可能包含OCR,是嗎?在開源社區(Apache 2許可)中,對Google Tesseract OCR的支持越來越多。

Apache Tika最近在名稱TikaOCR中包含了對Tesseract OCR的支持。


搜索

您已經在使用SQL服務器,所以如果fulltext support滿足您的需求,它可能是最簡單的開始,只是使用提卡生成純文本可以是作爲另一列(W/FULLTEXT索引)添加到SQL Server中的文檔表中。

裝有一個基於Lucene的搜索服務器(Apache Solr實現,或Elasticsearch)將大大提高你的能力來調整搜索和暴露的最佳實踐的搜索功能(自動完成,搜索方面,類似的搜索)。

Lucene.NET是另一種解決方案(C#庫),但它並沒有跟上Lucene Java項目(2012年的最新更新)。此外,如果使用5MM +文檔,您可以考慮採用基於服務器的進程外搜索解決方案。


多租戶戰略

最終你有三個主要選項:

  1. 共享數據存儲,共享表/索引/收集
  2. 共享數據存儲,單獨的表/索引/收藏
  3. 獨立數據存儲

最終,您可以使用SQL Server實現以上三種方法中的任何一種(當前實現爲#1,正確?)。

對於任何搜索解決方案,#3 - 單獨的數據存儲可能成爲操作上成本過高您的客戶名單不斷增加(除非有硬性要求,以防火牆關閉組織數據)。

因此,許多多租戶搜索應用程序使用#2 - 共享數據存儲,單獨的搜索索引,或#1 - 共享數據存儲,共享索引上的要求取決於

兩個SolrElasticsearch將使您能夠設置每個客戶端的一個文件索引/收集(#2),或管理一個大的多客戶端與收集,比方說,用於過濾client_id場(#1)。

使用商業Elasticsearch插件(Shield),可以提供索引級別的安全性,例如,每個獨立的面向客戶端的.NET應用程序只能訪問客戶端的文檔索引(上面的#2策略)。


集成

你使用.NET的,並且可能不希望纏鬥Java庫。 Solr和Elasticsearch都作爲具有HTTP API的服務器進行搜索和攝取。 Solr的Apache Tika集成稱爲Solr CELL,Elasticsearch通過elasticsearch-mapper-attachments plugin project(這兩者都將使您免於Java開發)。

但是,Elasticsearch's Tika integration does not yet support Tesseract OCRSolr's integration does)。

.NET clients for Solr

.NET clients for Elasticsearch(NEST是獲得了很多使用的)


縮放條件

OCR處理和文本提取是CPU密集型的,因此作爲你的攝取量不斷增長,您最終可能會考慮在不用於搜索的專用機器上處理文檔。


綜上所述,假設你需要OCR,這些攝取/搜索棧可以工作:

  1. Java或命令行提卡+正方體(攝取),SQL Server全文(搜索)
  2. Solr的瓦特/ Solr的細胞提卡/超正方體​​集成(攝取+搜索)
  3. 命令行超正方體OCR(用於圖像OCR提取物)+ Elasticsearch瓦特/ elasticsearch映射器-附件插件爲提卡支持(攝取+搜索)

我希望這能給你一個解決問題的出發點!

+0

感謝您的解釋。 – huseyindotpw

+0

我按下輸入和註釋消失了:)當我編輯5分鐘過去了,對不起。 感謝您的解釋。您真的睜開了眼睛:) 我們現在不需要OCR,稍後可能會。 看來Apache Tika和ElasticSearch適合我們。 我在調查時發現了一款​​微軟產品,叫做微軟搜索服務器。它有ifilters的索引功能。我安裝了Adobe PDF iFilter,在目錄中創建了一個內容源文件。它似乎在索引和搜索上成功。但我無法找到如何以編程方式創建內容源。我在此浪費時間。您對此有何想法? – huseyindotpw

+0

我沒有使用MSS的經驗,但[本文](http://stackoverflow.com/questions/17511568/is-it-possible-to-use-microsoft-2013-sharepoint-search-server-as- my-search-engin)似乎表明它與Sharepoint緊密結合。當然,Sharepoint通常用於MSFT世界中的文檔管理。我無法說明採集/搜索功能,但是如果您已經掌握了Sharepoint專有技術和許可證協議,那麼您可能可以完成SharePoint和MSS所需的大部分功能。 –