2012-04-28 40 views
1

我正在用後端平靜的web服務構建一個web應用程序。基於Apache Lucene的DAO?

我的一個表是非常獨立的,即只能從另外一個表的方式,我可以快樂地生活在沒有加入時,我只需要通過主鍵獲取引用的行。然而,這個表包含很多行,並且針對它執行的搜索全都尖叫「Lucene」。 MySQL無法在合理的響應時間內處理這些查詢。

所以我想利用Lucene搜索此表。在過去,我廣泛使用了Solr,所以我熟悉這些概念和術語。我一直在想,考慮到上面描述的情況,我沒有看到爲什麼我不應該簡單地使用Lucene作爲這個特定實體的規範存儲的原因,而不是SQL-to-Lucene索引同步。基本上我想要有一個「Lucene DAO」實現來取代當前Hibernate DAO實現這個特定的表。

所以我的問題是:

  1. 是否有任何理由爲什麼我應該避免,並堅持到SQL對指數同步?
  2. 如果「Lucene的DAO」是一個可行的辦法,是否有提供類似的東西的基礎上的任何圖書館在那裏?我試圖搜索,但找不到任何。
  3. 我所遇到Hibernate Search它只做什麼我正在尋找,但我可以嘗試使用它的搜索只有一半。有沒有人有任何使用Hibernate Search的經驗?

編輯:現在我已經遇到Compass其快速瀏覽似乎正是我要找的。有沒有人有任何經驗呢?


編輯#2:羅盤已經停止,並用ElasticSearch替換這是不完全一樣的(服務,而不是一個分量)。 Hibernate Search沒有被證明是我正在尋找的。底線是這是一種有效的方法,但目前必須自己實施這樣的DAO。

回答

2

我會拋棄SQL對於這種使用情況和使用Lucene的直線,沒有獵。

你使用Lucene查詢會有很多更豐富:N克,而不是等。