問題タブ [hibernate-search]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - ComplexPhraseQueryParser
Hibernate Search を使用して、自分の Web サイトにあいまいフレーズ検索を実装したいと考えています。私は、ComplexPhraseQueryParser がこれには問題ないことを何人かの人々から読みました。
しかし、問題は、それに関連するいくつかの誤解や問題があるということです。
たとえば、次のようなテスト タイトルを考えてみましょう (私はこれをたくさん持っており、ユーザーが好きなものを検索できるようにする必要があります)。
「体型を整える方法を知っていますか?」
誰かが「形を整える方法を知っていますか?」と入力した場合。私のComplexPhraseQueryParserは何も見つけられません。しかし、「cnow~」のようなスペルミスのある単語の後に「~」文字を入力すると、機能して結果が返されます。
これの理由は何ですか?ComplexPhraseQueryParser はそのような状況をサポートしていませんか?
いくつかのスペルミスのある単語を検索して結果を返すようにしたいと考えています (Google 検索と同様)。
前もって感謝します!
java - FullTextHibernateSessionProxy がクラスローダーから見えない
頭を包むことができない非常に奇妙なエラーに遭遇しました。Seam 2.2.1.CR2 と JBoss 4.3.0.GA を実行しています。私のアプリケーションは3つのモジュールで構成されています:
アプリケーション.xml
次の Bean はスケジュールされており、非同期で実行する必要があります。それは私の EJB3 モジュールにあります:
イベントが発生すると、次の Bean がそれを取得します (EJB3 モジュールでも):
components.xml
アプリケーションを起動してキッカーが作動すると、すべてがうまく機能するまで
次に、次の例外がスローされます。
managed-persistance-context にスコープを追加すると:
次のエラーが表示されます。
fulltextentitymanager は hibernatesearch-3.0.1.GA から来ています。
エンティティを保存する .index を呼び出す行を削除すると ( em.persist(new CompanyInNeedOfIndexing(company, getNodeName())); )、スコープが APPLICATION に設定されている場合にのみ機能します。
これがうまくいかない理由はありますか?ヒントはありますか、それとももっと情報が必要ですか?
indexing - 古い Hibernate Search インデックスを削除する方法
Web アプリケーションで全文検索に Hibernate 検索を使用しています。管理パネルにインデックス作成用のボタンがあります。私はこのコードでそれを行います:
インデックスが正しく構築されていて、このボタンをもう一度押すと、古いインデックス ファイルがまだディスク上にあり、プログラムによって新しいインデックスが作成されます。等々。新しいインデックス ファイルを作成する前に、古いインデックス ファイルを削除するのを手伝ってもらえますか?
java - Javaベース(GWT、Spring、Hibernate)Webアプリケーション向けのSaaS/マルチテナンシーアプローチ
私は現在、Spring、GWT、Hibernate、Jackrabbit、Hibernate Search / Lucene(とりわけ)を使用するシングルテナントのJavaベースのWebアプリを本格的なSaaSスタイルのアプリに変換することを検討しています。
SaaSアプリにするために単一のテナントアプリに加える重要な変更として、次の7つの「もの」を強調する記事に出くわしました。
- アプリケーションはマルチテナンシーをサポートする必要があります。
- アプリケーションには、ある程度のセルフサービスサインアップが必要です。
- サブスクリプション/請求メカニズムが整っている必要があります。
- アプリケーションは効率的に拡張できる必要があります。
- アプリケーションとテナントを監視、構成、および管理するための機能が整っている必要があります。
- 一意のユーザーの識別と認証をサポートするメカニズムが必要です。
- テナントごとにある程度のカスタマイズをサポートするメカニズムが必要です。
私の質問は、私がリストしたものと同様のテクノロジーを使用して、SaaS /マルチテナントアプリに上記の7つのことのいずれかを実装した人はいますか?私は、現在検討している道を進む前に、そうするための最良の方法についてできるだけ多くの意見を得ることに熱心です。
まず、モデルレベルで複数のテナントを処理する方法を十分に理解していると確信しています。すべてのテーブルにテナントIDを追加してから、Hibernateフィルター(およびHibernate Searchのフルテキストフィルター)を使用して、ログオンしているユーザーのすべてのクエリのテナントIDに基づいてフィルター処理することを考えています。
ただし、特にテナント数が非常に多くなった場合は、パフォーマンスについても懸念があります。
このようなソリューションを実装する方法についての提案は大歓迎です(そして、この質問が少し自由すぎる場合はお詫びします)。
java - Lucene が InChIKeys と一致しないことがあるのはなぜですか?
Hibernate Search を使用してデータベースにインデックスを付けました。インデックス作成とクエリの両方にカスタム アナライザーを使用しています。トークン化されるべきではない inchikey というフィールドがあります。値の例は次のとおりです。
- BBBAWACESCACAP-UHFFFAOYSA-N
- KEZLDSPIRVZOKZ-AUWJEWJLSA-N
Luke でインデックスを調べると、必要に応じてトークン化されていないことを確認できます。
しかし、ウェブアプリで検索しようとすると、インチキーが見つかるものと見つからないものがあります。興味深いことに、これらの inchikeys では、最後のハイフンなしで検索すると検索が機能します。 BBBAWACESCACAP-UHFFFAOYSA N
見つからないインチキーに共通する要素を見つけることができませんでした。
ここで何が起こっているのか分かりますか?
MultiFieldQueryParser を使用して、データベース内のさまざまなフィールドを検索します。
セットアップの詳細については、ティムと私がここに投稿しています。
lucene - 言語に基づいて複数のフィールドを休止状態で検索する
db 全文検索を lucene に変更することに興味があります。私は休止状態を使用しているので、休止状態検索を使用するのが賢明だと思います。でも問題があります。
私たちのレコードには、さまざまな言語の情報とタイトルのリストがあり、単一の言語とすべての言語に基づいて検索できる必要があります。
単純な lucene で実行できる可能性がありますが、現在のトランザクションでどの程度うまく機能するかはわかりません。したがって、休止状態の検索と休止状態を使用してインデックスを処理する方がはるかに優れています。
私が説明した方法で検索するために、インデックスにそのようなフィールドを作成することは可能ですか?
こうしようかな。次のように Record に getter を作成します。
public String getEnglishTitle(){...}
public String getFullInfos(){...}
そして、これらのゲッターにインデックス注釈を付けて、必要なフィールドをインデックスに入れますか?
java - リストの検索を可能にするために注釈を付ける方法HibernateSearchを使用したフィールド
次のようなドメインオブジェクトがあるとします。
タイトルとキーワードの全文検索を実行する次のような検索を実行できるように、キーワードフィールドに注釈を付けるにはどうすればよいですか。
hibernate - 休止状態の検索:Aの親クラスのBの子にインデックスを付ける方法は?Luceneを使用して特定のオブジェクトAを1つ含むBオブジェクトのみを取得するにはどうすればよいですか?
luceneのインデックス作成に問題があります。1つのインデックス付きエンティティをmanyToManyアソシエーションに挿入しましたが、luceneは期待どおりにインデックスを作成しません。
私がするとき:level.getCourses()。add(myCourse1); entityManager.save(level);
myCourse1(たとえば、ID#10)は適切に作成され、レベルにアタッチされます(レベルは親クラス、コースは子です)。次に、「Course」のインスタンスは適切にインデックス付けされますが、Course用に生成されたインデックスを見ると、値#10の「levels.id」が見つかると思います。しかし、私はそれを見つけられません。CourseでLuceneFilterFactory.classを使用して、1つのレベルIDでコースをフィルタリングするため、この種のインデックスが必要です。
たぶん、@ContainedInと@IndexEmbeddedアノテーションの使用は良くありませんか?あるいは、私が必要なことをするのに完全に間違った方法をしているのかもしれません。
簡単にするために:
私は2つのクラスAとBを持っており、AとBの間にmanyToManyの関連付けがあります。A
は関係のマスターです。AとBにインデックスが付けられます。多対多の関連付けに1つのAオブジェクトを含むBオブジェクトを取得するために、休止状態の検索を使用したいと思います。すべてのBを取得するのではなく、この特定のAを含むBオブジェクトのみを取得します。
これを行う方法 ?
ご協力いただきありがとうございます
lucene - 効率的なフリーテキスト検索、Hibernate Search、またはLuceneのどちらが優れていますか?
Spring MVC、Spring、Hibernateを使用してWebアプリケーションを開発しています。
アプリケーションに効率的なフリーテキスト検索機能を追加する必要があります。このために、Hibernate Search(内部でLuceneを使用)または直接luceneのいずれかを使用することを検討しています。
アプリケーションですでにHibernateを使用しているので、私たちにとって最良のオプションは何ですか?お互いの長所と短所は何ですか?
ありがとう。
spring - アクションの実行時に AnnotationValidationInterceptor によって NoSuchMethodException がスローされる
使用する jar の詳細: Struts2 2.2.1 Spring 3.0.5.RELEASE Hibernate 3.6.0.FINAL
次のようにマップされたアクションを実行しようとすると、奇妙な問題が発生します。
最初のアクションはユーザーを検索ページに送り、ユーザーは検索文字列を入力し、フォームを投稿すると 2 番目のアクションが呼び出されます。
spring config でのアクションは次のとおりです。
検索サービスは hibernate 検索を使用し、次のように定義されます。
spring aop を使用してトランザクション境界を構成しています。永続化構成は次のとおりです。
Spring は web.xml で次のように構成されています。
検索 JSP ページには、doSearch メソッドを呼び出すアクションに検索文字列を送信するフォームがあります。ただし、検索を送信すると、次のような例外が発生します (devmode が有効になっているため)。
そしてスタックトレース:
シグネチャを持つアクション クラスにメソッドがあるため、これは非常に奇妙です。
ActionProxy に期待されるメソッドがない理由を明らかにできる人はいますか?
ありがとう、
アレックス