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 サイトの他の関連記事を参照してください。