ホームページ  >  記事  >  HibernateSearch 6 を使用して ElasticSeacrch のインデックス付きエンティティのすべてのフィールドを検索する方法

HibernateSearch 6 を使用して ElasticSeacrch のインデックス付きエンティティのすべてのフィールドを検索する方法

PHPz
PHPz転載
2024-02-11 17:15:111191ブラウズ

php エディタ Baicao は、Hibernate Search 6 を使用して Elasticsearch のインデックス エンティティのすべてのフィールドを検索する方法を紹介します。 Hibernate Search 6 は、Elasticsearch とシームレスに統合される強力な全文検索エンジンです。 Hibernate Search 6 を構成して使用すると、エンティティのすべてのフィールドのインデックスを Elasticsearch に簡単に作成し、効率的な全文検索機能を実装できます。この記事では、この目標を達成するために Hibernate Search 6 を設定および使用する方法について詳しく説明します。この記事の手順に従うと、強力な全文検索エンジンをすばやく構築し、アプリケーションの検索機能を向上させることができます。

質問内容

elasticsearchでhibernate search apiを使って検索するには以下の方法があります。クエリ文字列値を「addresses.address_key:123」として渡します。これは、fields(addresses.address_key) で説明したように、addresss.address_key で検索されます。

このメソッドがクエリ文字列の入力を受け入れるようにする方法 (例: first_name:john) すべての全文フィールドを検索します。

elasticsearch バージョン: 8.10 Hibernatesearch バージョン: 6.2.2

リーリー

インデックス付きエンティティ クラス:

public page<employee> searchemployee(string querystring) {
       try {
            searchsession searchsession = search.session(entitymanager);

            searchresult<employee> searchresult = searchsession.search(employee.class)
                    .extension(elasticsearchextension.get())
                    .where(f -> f.simplequerystring().fields("addresses.address_key").matching(querystring))
                    .fetch(math.tointexact(page.getoffset()), page.getpagesize());

            page<employee> pageresult = new pageimpl<>(searchresult.hits(), page, searchresult.total().hitcount());
            return pageresult;
        } catch (searchexception pe) {
           throw pe;
        }
}

回避策

述語を定義するときに、複数のフィールドを明示的にターゲットにすることができます:

リーリー

現在、「すべてのテキスト フィールド」のみをターゲットにするオプションはありません。https://www.php.cn/link/0b36451530d9491114523d4b66253837 を参照してください。

また、明確にしておきますが、単純なクエリ文字列構文では、クエリ文字列内のフィールドへの明示的な参照はサポートされていません。

この例では:

リーリー

...検索文字列内の「addresses.address_key:」プレフィックス (「addresses.address_key:123」) には特別な意味はなく、ドキュメント内で見つかった用語としてのみ解釈されます。

次のように書いてもよいでしょう:

リーリー

しかし、実際にあなたが望んでいることはこれだと思います:

リーリー

以上がHibernateSearch 6 を使用して ElasticSeacrch のインデックス付きエンティティのすべてのフィールドを検索する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。