問題タブ [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.

0 投票する
3 に答える
807 参照

java - Luceneとアクセス制御(コメントの可視性)

全文検索のこの単純なシナリオを想像してみてください:コメント付きの記事。コメントのテキストでも記事を検索したい。それだけでも実装はかなり簡単です。

ただし、すべてのコメントがすべてのユーザーに表示されるわけではありません。コメントを書き込むユーザーは、コメントの表示を具体的なロールに制限することもできます(したがって、コメントにはテキストとロールの2つのフィールドがあります)。

記事のlucene検索を制限して、現在のユーザーに表示されるコメントの内部のみを表示することはできますか(comment.roleは現在のユーザーのロールのセット内にあります)?

もしそうなら、私に正しい方向を示してください。どのようにすればよいのでしょうか。そのようなクエリ(できれば)またはluceneフィルターを記述してください。

(私は休止状態検索でluceneを使用していますが、違いはありません)

0 投票する
2 に答える
2441 参照

full-text-search - Luceneでの複数インデックス検索(休止状態検索)

Lucene Feauturesの公式サイトでは、luceneは「マージされた結果を使用した複数インデックス検索」をサポートしていると述べています。

どういうわけか休止状態の検索でこれを行うことは可能ですか?

私のユースケース:コメント付きのAricle。記事用とコメント用の2つの別々のインデックスが必要です。コメントの一つでマッチでも記事を見つけられるようにしたいと思います。ユーザーの観点から、記事のテキストとそのコメントを「調べて」、記事のリストを返す検索が必要です。(すべてのコメントを記事ドキュメント内のフィールドとして保存することでこれを実装できることはわかっていますが、コメント内の検索にフィルターを適用したいと思います。)

ネイティブのLuceneまたはI/mが完全に要点を見逃している場合でも可能ですか?

0 投票する
1 に答える
2871 参照

lucene - Hibernate Search と Lucene: 並べ替えの種類を特定できません

Hibernate - Lucene Search を使用しています。

インデックス ファイル/テーブルにデータがない場合、並べ替え中に次の実行時例外が発生します。

これは私のコードです:

......... ......... query.setFirstResult(startIndex); query.setMaxResults(displayCount);

………………

java.lang.RuntimeException: フィールド vendorName に用語がありません - org.apache.lucene.search.ExtendedFieldCacheImpl$5.createValue(ExtendedFieldCacheImpl.java:139) でソート タイプを判別できません org.apache.lucene.search.FieldCacheImpl$Cache.get (FieldCacheImpl.java:71) org.apache.lucene.search.ExtendedFieldCacheImpl.getAuto(ExtendedFieldCacheImpl.java:127) で org.apache.lucene.search.FieldSortedHitQueue.comparatorAuto(FieldSortedHitQueue.java:487) で org.apache. org.apache.lucene.search.FieldSortedHitQueue.getCachedComparator(FieldSortedHitQueue) で lucene.search.FieldSortedHitQueue$1.createValue(FieldSortedHitQueue.java:184) .java:167) org.apache.lucene.search.FieldSortedHitQueue.(FieldSortedHitQueue.java:55) で org.apache.lucene.search.TopFieldDocCollector.(TopFieldDocCollector.java:43) org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:121) org.apache.lucene.search.Searcher.search(Searcher.java:86) org. hibernate.search.query.QueryHits.updateTopDocs(QueryHits.java:103) org.hibernate.search.query.QueryHits.(QueryHits.java:61) org.hibernate.search.query.FullTextQueryImpl.getQueryHits(FullTextQueryImpl.java) :354) org.hibernate.search.query.FullTextQueryImpl.list(FullTextQueryImpl.java:270) で com.tis.purchasedetails.dao.PurchaseDetailsDAO.getAllPurchaseDetails(PurchaseDetailsDAO.java:1025) で org.apache.jsp.jsp。 PurchaseDetails.purchaseDetailsList_jsp._jspService(purchaseDetailsList_jsp.java:275) の org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) の javax.servlet.http.HttpServlet.org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) のサービス (HttpServlet.java:802) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) の org.apache .jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) ) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) で org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) で org.apache.catalina.core.ApplicationDispatcher. org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) の processRequest(ApplicationDispatcher.java:463)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet. java:264) で javax.servlet.http.HttpServlet.service(HttpServlet.java:802) で org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) で org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:173) org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) org. apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet. java:264) で javax.servlet.http.HttpServlet.service(HttpServlet.java:802) で org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) で org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:173) org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) org. apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)332) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) で org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) で javax.servlet.http.HttpServlet.service (HttpServlet.java:802) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) org.apache. catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java: 398)332) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) で org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) で javax.servlet.http.HttpServlet.service (HttpServlet.java:802) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) org.apache. catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java: 398)java:264) で javax.servlet.http.HttpServlet.service(HttpServlet.java:802) で org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) で org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:173) org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) org. apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)java:264) で javax.servlet.http.HttpServlet.service(HttpServlet.java:802) で org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) で org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:173) org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) org. apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.ジャワ:398)org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.ジャワ:398)

0 投票する
1 に答える
2480 参照

java - JPA HibernateSearch プロジェクション

HibernateSearch で JPA を使用しようとしています。http://docs.jboss.org/hibernate/stable/search/reference/en/html/search-query.htmlの例 5.3 を使用しました。期待通りの結果が得られます。

しかし、戻ってくるデータは巨大なグラフです。データの主キーのみが必要です。そのため、例 5.9 を試してみましたが、Hibernate API しか表示されません。方法はありませんでしたjavax.persistence.Query.setProjection()

検索結果の主キーだけを取得するには、何を使用できますか? JPAで休止状態を取得しようとする必要がありsessionますか?EntityManager

助けてくれてありがとう。

0 投票する
1 に答える
1665 参照

java - Hibernate Search アノテーションが継承されない

スーパークラスに次の注釈があるクラスにインデックスを付けています。

同じ @Inheritance アノテーションがサブクラスにあります。スーパークラスの注釈はすべてメソッドにあります。スーパークラスでインデックスを付けたいフィールドは無視されます:

スーパークラスには、フラグ付きのプロパティと ID のみがあります。@Id アノテーションが付いているため、ID は正常に表示されますが、なぜ flagged がインデックス化されていないのかわかりません。この投稿を見つけましたが、明確な答えはありません。私は何が間違っているのでしょうか?

0 投票する
1 に答える
565 参照

hibernate-search - (N) Hibernate.Search : 1 つのフィールドで異なるプロパティにインデックスを付ける

Lucene を使用してエンティティのインデックスを作成していたとき、すべてのインデックス付きプロパティを「all」という名前のフィールドに入れて、エンティティ タイプの「すべて」を検索する習慣がありました。

今、NHibernate.Search を使用して、これを行う方法を見つけることができません。私はこれを試しました:

しかし、ScopedAnalyzer.cs の 26 行目で、「key already present in dictionary」という例外がスローされました。

ここで、「スコープ」はインデックス フィールドの名前です (ここでは「すべて」)。のようにチェックを入れると

それは非常にうまく機能します。各「投稿」ドキュメントに2つのフィールドがあり、1つは本文、もう1つは名前です。しかし、NHibernate.Search のソース コードを変更するのは簡単ではありません。

1 つのフィールドでさまざまなプロパティにインデックスを付ける方法について、誰か提案がありますか?

0 投票する
1 に答える
793 参照

java - ワイルドカードクエリを使用する場合のBooleanQuery$TooManyClauses例外

私はHibernateSearch/ Luceneを使用して、名前でオブジェクトを検索するための非常に単純なインデックスを維持しています。

私のモデルクラスはすべて、NamedModel基本的に次のように見えるクラスを拡張します。

私の問題はBooleanQuery$TooManyClauses、特定の文字で始まる名前のオブジェクトのインデックスをクエリすると例外が発生すること"name:l*"です。のようなクエリ"name:lin*"は問題なく機能します。実際、ワイルドカードが機能する前に複数の文字を使用するクエリは機能します。

ネットで同様の問題を検索しているときに、かなり複雑なクエリを使用している人しか見つかりませんでした。それが常に例外の原因であるように見えました。maxClauseCount制限に達したからといって制限を変更するのは良い習慣ではないと思うので、増やしたくありません。

ここでの問題は何ですか?

0 投票する
2 に答える
1216 参照

hibernate-search - HibernateSearchの質問

私はHibernateSearchを使用しており、ドメインオブジェクトの1つのテーブルにLuceneインデックスを適用しています。ここで、このテーブルからドメインオブジェクトを選択し、インデックス付けされていない他のテーブルとの結合に基づいてフィルタリングを適用します。

たとえば、インデックスを作成したオークションロットテーブルがあります。そして、私は見積もりテーブルを持っています。見積もりにはオークションロットへの参照があります。

AuctionLotsテーブルで完全なテスト検索を実行し、引用符のない一致したエンティティを返したいです。通常のSQLでは、これはJOINによって実現されます。

しかし、HibernateSearchの状況では、ドメインオブジェクトを取得するために完全なテスト検索を行う必要がありますが、JOINを使用してフィルタリングを実行する方法がわかりません。

これを行う方法を知っている人はいますか?

0 投票する
1 に答える
237 参照

java - 検索結果はHibernateSearchのフィールドによるものでした

オブジェクトの多くのフィールドから検索するHibernate検索があります。どのフィールドが各結果オブジェクトの結果と一致したかを知ることは可能ですか?

0 投票する
3 に答える
4362 参照

java - 休止状態の検索 + spring3 + jpa

プロジェクトに休止状態の検索を統合しようとしています。モデルにインデックスが付けられていますが、何らかの理由で検索クエリから結果が返されません。この問題を数時間解決しようとしていますが、何もうまくいかないようです。

ドメイン オブジェクト:

ダオ:

サービス:

テスト:

構成

実際、データベースには、その権限フィールドの値に一致するロールが入力されています。通常の CRUD テストはすべて成功するため、エンティティ マネージャーは有効です。エラーは完全に休止状態の検索(3.1.1.GA)に関連していることを意味しますが、どこが間違っているのでしょうか?