2013-06-13 42 views
1

我想在我的web應用程序中使用java技術構建搜索功能。我將不得不搜索數據庫,這取決於用戶查詢並顯示結果。我可以採用哪種方式來做到這一點(請注意我使用的是Java技術)??謝謝。使用java技術實現搜索(java web)

回答

5

您可以使用像http://lucene.apache.org/core/http://lucene.apache.org/solr/這樣的產品,而不是自己寫這個。

Lucene是一個高性能的文檔搜索引擎。 SOLR是建立在Lucene之上,並提供額外的功能(如命中突出,面搜索,數據庫集成和豐富的文檔(如Word,PDF,..)搜索)

Lucene的將分析你的文本數據並建立索引。在執行搜索時,您可以針對此索引運行lucene查詢。

+0

SOLR(和Lucene)非常適合自由文本搜索,刻面等等。但是,OP只是提到了搜索,所以它可能或可能不是最好的解決方案...... – haraldK

+1

謝謝,但它是一個項目,我一直要求通過使用javaEE技術通過數據庫實現搜索功能,而不是別的。你有什麼想法用什麼? –

0

假設你的意思是在數據庫中的數據的自由文本搜索...

對於自由文本搜索Lucene和/或SOLR是非常好的解決方案。這些工作是通過在數據庫中創建一個單獨的數據索引來實現的。您可以從數據庫中提取數據並使用Lucene/SOLR對其進行索引,或者編寫寫入數據庫的代碼以更新Lucene/SOLR索引。鑑於你所說的話,這聽起來像是正在對現有數據庫進行改進,因此提取數據並將其編入索引可能是最佳解決方案。在這種情況下,SOLR可能更適合用作包裝解決方案。

另一種選擇是Hibernate Search。如果你剛開始,這將是一個解決方案。在事實之後添加更加困難。

還要記住,除了正常的關係查詢之外,還有一些數據庫支持自由文本搜索,值得一看。 SQL Server當然具有文本搜索功能,我想其他數據庫有某種支持。我不太清楚你如何訪問這些,但我希望能夠通過JDBC使用SQL來完成。儘管如此,它可能是數據庫特定的。

如果你只是指普通的SQL搜索,那麼Java EE技術,普通JDBC,Spring模板,ORM技術(JPA,JDO,Hibernate等)就是一個整體。這個名單還在繼續,如果沒有更多的信息,很難提出任何特定的方法。

+0

非常感謝。我想要使​​用的方法是JPA(Java持久性API)。我該如何去解決它(我仍然是使用Java的web開發中的新手)??再次感謝。 –

+0

幸運的是JPA並不是很難入門。幾個出發點[ORACLE JPA教程](http://docs.oracle.com/javaee/6/tutorial/doc/bnbpz.html)和[Hibernates JPA教程](http://docs.jboss.org/休眠/ ORM/4.2 /快速啓動/ EN-US/HTML/ch04.html) – pauli