2013-04-23 49 views
0

現在我有一種情況,我需要做一些比較和結果過濾,這不是很簡單,我想要的是像Lucenes搜索,但只有我會開發它,這不是我的決定,雖然我會用Lucene去。在java列表和數據庫記錄中使用休眠搜索的性能

我將做什麼是:

  1. 根據某一個領域的全字匹配查找元素,如果沒有則檢查其是否與它開始執行檢查,如果它只是包含的內容。
  2. 每個字段都根據匹配的大小寫(full-> begin-> contains)以及它對我的優先級權重。
  3. 匹配完成後,我還會檢查其他字段的重量以及最終的總行重。
  4. 然後我將返回一個兩個行和他們的權重的地圖。

現在我意識到,這並不容易通過hibernate的HQL來完成,這意味着我將不得不運行多個查詢來執行此操作。

所以我的問題是我應該這樣做在java的意思是我應該檢索所有記錄,並做我的計算,以找到我的目標,或者我應該通過執行多個查詢在休眠?根據性能和速度哪個更好?

回答

0

不幸的是,我認爲正確的答案是「這取決於」:多少字,什麼數據結構,數據是否在內存中,你有多久做搜索適合等

我傾向於認爲數據庫是更好的解決方案,即使Hibernate不是它的一部分。您可能需要學習如何編寫更好的SQL。也許Hibernate爲你生成的動態SQL是不夠的。正確的連接和索引可能會使這個表現很好。

可能有第三種方式來考慮:Lucene和索引。我需要更多地瞭解您的問題才能決定。

+0

好吧,讓我們只是說它的管理層決定不使用第三方API,所以我堅持這一點,沒有時間去學習一個新的API,但事情是我有很多不同的匹配和權衡方案匹配並顯示最終結果。 – engma 2013-04-23 10:07:38

+0

新的API? JDBC不是一個新的API; SQL也不是。 – duffymo 2013-04-23 11:30:17

+0

我的意思是lucene api – engma 2013-04-23 12:08:09

相關問題