0

アプリケーションで Hibernate Search を使用します。ファセットを使用します。最近、大きな制限が見つかりました。複数の値を持つことができるフィールドに対するファセットは、Hibernate Search では正しく機能しません。ファセットされたフィールド (複数のカテゴリなど) に対してドキュメントに複数の値がある場合、値の 1 つだけが考慮されます。

私は現在、いくつかの2つの解決策を考えることができます:

  • bobo-browse を使用する (http://code.google.com/p/bobo-browse/)
  • ソル (http://lucene.apache.org/solr/)

どちらのソリューションでも、引き続き Hiberante Search を使用してインデックスを維持し、以前と同じように (Hiberante Search を使用して) クエリを作成し、必要に応じてファセット用に追加の bobo-browse または solr クエリを実行します (bobo-browse または solr は同じ種類のインデックスを使用します)。 「読み取り専用」の方法)。問題は、インデックスを頻繁に更新し、ファセット クエリで本当に新しいデータを取得したいことです。Bobo-browse は Hiberante Search と自動的に統合されず、検索を最新の状態に保つために、いくつかの問題が発生する可能性があります (例: https://groups.google.com/forum/?fromgroups=#!topic/bobo-参照/sn_Efc-YClU)。ドキュメントは少し乱雑に見え、まだ完成していません。一方、Solr は、ファセットを適切に機能させるためだけに、追加するのが非常に大きなもののように思えます。そして、インデックスの更新/更新で問題が発生する可能性があるのではないかと心配しています。

その件について何か経験はありますか。助言がありますか?

4

3 に答える 3

1

Hibernate Search の開発者として、私たちに参加して、必要なものの実装を支援することをお勧めします。

多値のファセットを実際に必要としていた人は誰もいなかったので、どちらのソリューションを選択すればよいかわかりません。代替案を探して試してみるのに最適です。

Hibernate Search は、特に優れたアナライザーの大規模なコレクションのために、すでに多くの Solr モジュールに依存しています。Solr のファセット ロジックを埋め込み、Solr をサーバー モードで実際に起動する必要なく、一貫性のある API にうまくパッケージ化する方法を見つけることができると確信しています。

Bobo-browse でも同じことができると思います。私は Solr が他の依存関係を追加しないことを望みますが、bobo-browse が優れたソリューションであることを証明しているのであれば、そうではありません..しかし、この選択で私たちを助けることができます.

代わりに何を手に入れますか?

  • 私たちはそれを維持します: 互換性は将来のどのバージョンでも維持されます。少しでもお役に立てれば幸いです。
  • 他のユーザーからの永遠の感謝;)
  • 何千人もの他のユーザーによる確固たるテスト
  • からのバグ修正と改善..
  • 履歴書にロックスターのバッジ

必要なもの?

  • 単体テスト
  • ドキュメントの更新
  • 賢明なコード

https://community.jboss.org/wiki/ContributingToHibernateSearch

于 2012-10-03T22:28:11.470 に答える
0

また、BoboBrowseをHibernateSearchと組み合わせて使用​​します。また、定期的な更新と読み取り専用の問題もあります。Boboは世の中で最も簡単なライブラリではありません。私は、Hibernate Searchと統合する方法を何度か検討しましたが、複雑さのために諦めました。

鮮度を確保するためにインデックスの時間指定リロードを使用しますが、収集するガベージが大量に発生します。Luceneは時間の経過とともにインデックスリーダーを再開するプロセスを最適化してきましたが、Boboチームはそれをサポートすることに真剣に取り組んでいません。 https://linkedin.jira.com/browse/BOBO-31でこの問題について説明しています。

Hibernate Searchインフラストラクチャは、統合するのに十分な柔軟性を提供する必要があります。Zoieは、Boboと統合されたHibernateSearchのようなリアルタイムインデックスシステムですhttps://linkedin.jira.com/wiki/display/BOBO/Realtime+Faceting+with+Zoieおそらくそれはあなたの努力を刺激することができます

于 2013-02-15T16:23:49.723 に答える
0

これは、hibernate-search の多値ファセット数の問題に対する解決策のようなものです。

ブログ: http://outbottle.com/hibernate-search-multivalue-facet-counts/

このブログには、単一値フィールドと複数値フィールドのファセット カウントを生成するために再利用できる Java クラスが含まれています。

提供されるソリューションは、ここで提供される BitSet ソリューションに基づいています: http://sujitpal.blogspot.ie/2007/04/lucene-search-within-search-with.html

ブログには、ソリューションを非常に包括的に示す Maven プロジェクトがあります。このプロジェクトは、hibernate-search ファセット API を使用してフィルター処理する方法を示しています。

日付範囲 AND 1 対多 (単一値) ファセット グループ AND 多対多 (複数値) ファセット グループの組み合わせ。

次に、各ファセット グループのファセット数を正しく導出するために、ソリューションが呼び出されます。

このソリューションは、次の jsFiddle エミュレーションと同様の結果を容易にします: http://goo.gl/y5C9UO (ただし、エミュレーションは範囲ファセットのデモを行いません)。

jsFiddle は、一般的なファセット検索の概念を調査する大規模なブログの一部です: http://outbottle.com/understanding-faceted-searching/。あなたが私のようで、ファセット検索の概念全体が非常に混乱していると感じている場合は、これが役に立ちます。

それは世界で最高の解決策ではないかもしれないので、遠慮なくフィードバックしてください。

于 2013-11-20T18:53:53.623 に答える