フルテキスト検索機能を利用するために、Hibernate検索を使用してインデックスを作成したいエンティティがあります。エンティティには、フィルタリングする必要のあるいくつかのフィールドがあります。例として:
@Field(index = Index.TOKENIZED, store = Store.NO)
@Lob
private String description;
@Field(index = Index.UN_TOKENIZED, store = Store.NO)
@Enumerated(EnumType.STRING)
@NotNull
private Type type;
このdescription
フィールドは、全文検索で使用したいものです。昔ながらのType
試合をしたいフィールド。CriteriaBuilder
Luceneが完全なテキスト検索を実行することに加えて、まっすぐなマッチングを処理する必要があること、および追加のフィルタリングを処理するようなものを使用する必要があることは、私には少し間違っていると感じます。ただし、この2つを組み合わせる方法が見つからずBooleanJunction
、検索アルゴリズムで、、、および一致をまっすぐにする必要のあるフィールドで演算子must
をmatching
使用keyword
することに頼っています。
だから私の質問は、私はそれを正しくやっていますか、それともフルテキスト検索にのみLuceneを使用し、他の属性のフィルタリングを他の方法で行うべきですか?
どうもありがとう、フィンバー