2013-08-06 14 views
1

這個問題可能看起來有點令人困惑,但這是因爲我缺乏經驗。我做了一些lucene使用教程,並有一些基本的知識。戈納實現這個引擎在.NET中作爲一個簡單的應用程序展示最常見的用法:帶有數據庫和ORM問題的lucene.net引擎使用的大綱

SE - 搜索引擎

  • 負荷從現有文件中的數據/數據庫
  • 把這個變成了Lucene店
  • 放在Lucene的索引一些值
  • 添加數據搜索(查詢)
  • 更新/刪除數據

這種用法看起來最常見。假設我們有一些來自網絡的數據集。據我瞭解整個過程,並想創建一個Android(Java)/ web應用程序,這將是這樣的:

  1. 創建一些數據庫結構
  2. 執行ETL過程轉換裸數據設置爲數據庫輸入(例如MySQL dbms)
  3. 實現lucene(lucene.net) 使用一些ORM(ADO.NET/NHibernate)將數據庫數據轉換爲lucene可理解的對象(例如lucene Document對應於數據庫表記錄[SE Document structure =數據庫表結構]?)(從未執行任何ORM)

如果我們有現有的關係數據庫,我們需要創建一個更容易理解的新的SE。我從來沒有使用ORM映射,所以不知道應該怎麼做。讓我們說,我們有一些基本的論壇,用戶和他們的帖子簡單的關係數據庫。如果用戶想要搜索某篇文章,他可以使用SE從基礎中檢索數據。如果他想添加/刪除一些帖子,(據我所知),他會直接使用沒有SE用法的數據庫。在將/ del數據添加到base後,我們必須通知我們的SE,更新(刪除當前文檔並從頭開始添加整個數據庫),創建新索引並對其進行優化。我甚至想知道,如果沒有數據庫,SE的應用程序將永遠存在。我知道SE有它自己的二進制平面文件結構,但在用戶/發佈數據中可能不會使用任何dbms?

我知道它看起來有點雜亂,但話題涉及不同的領域,因爲一般的誤解,最好現在問問以後的時間。

欣賞來自已經遇到此問題的人的任何信息。

感謝

編輯: 只是讓說,我們希望測試一些有用的SE使用。我們將需要帶有數據的數據庫來測試它,因此將有一些.net對象或直接到lucene Documents(?)的ORM,然後將它放到lucene特定的存儲中。

+1

太單一的問題...... – I4V

+0

而不是您的應用程序的一般結構設計。 – Paparazzi

回答

1

純粹使用ORM檢索數據並將其添加到Lucene索引是矯枉過正的。 Lucene索引文檔,這本身並不比字段值對多。您最好直接使用ADO.NET或者使用一個微型ORM來獲取數據並將其導入到準備索引的Lucene文檔中。

如果您的數據還不在關係數據庫中,那麼您可能還會考慮是否需要RDBMS。 Lucene可以存儲數據併爲其編制索引。