大きな(500 000)ではないテーブルの一部の11文字列またはテキストフィールドでILIKEを実行しているクエリがありますが、明らかに大きすぎるILIKEでは検索クエリのラウンドは20秒です。データベースはポストグルです8.4Hibernate Search、Luceneまたはその他の代替手段?
私はこの検索をもっと速くするために実装する必要があります。
何が私の心に来た:
私が検索する必要があるすべての列から組み立て追加TVECTOR列を作り、その上にフルテキストインデックスを作成しました。全文検索はかなり速かった。しかし...私はこのTVECTORタイプを私の.hbmsにマップすることはできません。だから、このアイデアは消えてしまった(いずれにしても、私はそれを一時的な解決策としてもっと捉えた)。
休止状態の検索。 (これについて初めて聞いたことがありますが)これは期待しているようですが、私は新しいAPIを使いたいと思っていないので、経験豊富な意見が必要です。いずれの場合においても
のLucene
、これは、この表で今起こっている、しかし、私は解決策には、より一般的な、フルテキスト検索に関連する将来のケースに適用されるようにしたいと思います。
すべてのアドバイスをいただきありがとうございます。
ありがとう
説明がありません。もう少し短い質問です。いくつかの文字列フィールドで検索できます。他のすべてのフィールドをインデックスにも格納するのは意味がありますが、検索可能にならない場合は、そこからオブジェクトを取得する、またはIDSを取得してデータベースに取得する必要があります? – Julia
@Julia検索したいフィールドにのみインデックスを付ける必要があります。 Hibernate Searchに、インデックスされたエンティティの@DocumentId(@Id)が何であるかを伝えます。 HibernateはこのIDを使用して、データベース(またはセッションキャッシュ)からエンティティを取得します。実際には、Hibernate Searchは検索文字列を取り、その検索に一致するドメインエンティティを返します。きちんとした? –
本当によかった! – Julia