Wicket + Spring + JPA/Hibernateスタックを使用するアプリケーションでは、データベースに保存されたレコードがフィルタリングされるかなり複雑な検索機能を持つInbox/Searchページがあります無数のフィルタリングオプションを使用してこれまでは、JPA Criteria APIを使用してデータベースクエリを作成しましたが、かなり面倒です。私は、フルテキスト検索機能が本当に必要ないのに、私はちょうど(私がそれについて読んだところから)クエリを生成するのが少し楽になるかもしれないと思っても、Hibernate-Searchがこれに適しているのだろうかと思っていましたか?Criteria APIの代わりにComplexQueryを使用するHibernate-Search
2
A
答えて
1
申し訳ありませんが、Hibernate SearchはLucenceに基づいています。 ではなく、他のクエリ言語です。
Luceneは、データベース内のエンティティを検索しません。Luceneインデックス内の属性を検索します。 Hibernate Searchは、データベースからLuceneインデックスにエンティティを接続する機能を追加します。
Hibernate SearchとLuceneは高度な全文検索が必要なときに作成ツールです。しかし、あなたがそれを必要としなければ、それは不自然な仕事(そして問題)の多くです。
したがって、Luceneを使用しない限り、Hibernate Searchはニーズに合っていません。
0
Hibernate Searchの主な使用例は全文検索です。ただし、単純な属性/条件の索引付け/検索にも使用できます。クエリを書くための構文が条件クエリより簡単かどうかは味わいの問題です。 フルテキスト検索機能を使用していない場合は、アプリケーションに追加のステップを追加することを検討する必要があります。 Luceneインデックスに対して検索クエリが実行されます(投影が使用されていなければ、エンティティIDを返します)。一致したエンティティはデータベースからフェッチされます。 一方、Hibernate Searchを使用すると、(可能であれば)いくつかの全文検索機能をいくつかの条件に追加することで、検索を「改善する」ことは簡単です。
検索を使用しているかどうかにかかわらず、キーは検索式または条件式のクエリをプログラムによって作成するフレームワークを作成することです。
関連する問題
- 1. Asana API:認証にAPIキーを使用する代わりに?
- 2. ネオンアニメーションの代わりにWebAnimations APIを使用する
- 3. データベースの代わりにAPIを使用するDjangoモデル
- 4. API 26のandroid.app.action.ENTER_CAR_MODEの代わりに使用するもの
- 5. Google Transliterate APIの代わりに使用するもの
- 6. divの代わりにdivの代わりにJSのプリペンドを使用する
- 7. navigator.geolocationの代わりにapi
- 8. トーストを使用する代わりに
- 9. 代わりにパーシャルビューコントローラを使用する
- 10. APIレベルの代わりにisAttachedToWindow()の代替手段を使用します。
- 11. JDBCの代わりにバックエンドのAPIを使用したSpringセッション
- 12. Google Maps API - 緯度/経度の代わりにch1903を使用
- 13. 代わりに使用するフォント
- 14. //使用する代わりに、プロトコル://
- 15. Railsの代わりにsend_fileの代替ファイルを使用する
- 16. MySQLの代わりにREST APIを使用するようにウェブサイトバックエンドを移動
- 17. pxにマイナスを使用する代わりに使用する
- 18. ストライプオーダーAPIを使用する代わりに顧客に請求する方法
- 19. プロンプトを使用する代わりにフォームデータを使用する
- 20. JPA Criteria APIのサブクエリでORDER BYを使用する代わりに、どのような方法がありますか?
- 21. クラスの代わりにコレクションを使用
- 22. Submitの代わりにButtonを使用
- 23. expand.gridの代わりにouterを使用
- 24. VARCHAR2の代わりにCLOBを使用
- 25. scrolllistの代わりにフラットリストを使用
- 26. ptの代わりにemを使用
- 27. サテライトアセンブリの代わりにリソースファイルを使用
- 28. リストビューの代わりにaddViewを使用
- 29. JqGrid:editurlの代わりに$ .ajax()を使用
- 30. SaveOrUpdateの代わりにMergeを使用
"Luceneを使わない限り、Hibernate Searchはあなたのニーズに合っていません。" - 私には奇妙な声明のようです。 Luceneを使用するかどうかは、Hibernate Searchが有用かどうかとは関係ありません。重要な点は、Hibernate Coreといっしょにフルテキスト検索が必要かどうかです。この場合、Hibernate Searchはあなたのためのものです。 (そしてそれはLuceneに依存します)。 – Hardy