lucene + hibernate を構成し、そのフィールド値の正確な部分でフィールドに一致するワイルドカード クエリを開発する方法は? たとえば、いくつかのフィールド「タイトル」がインデックス化されていて、そのエントリが「My first wildcard query」の 2 つだけであるとします。および「私の 2 番目のワイルドカード クエリ。」; 次に、「irsT WiLdCaRd q」を照会すると、最初の 1 つだけを返す必要があります。また、大文字と小文字を区別する必要はありません。
私はこのようなことを試しました:
FullTextSession ftSession = org.hibernate.search.Search.getFullTextSession((Session) em.getDelegate());
QueryContextBuilder qbc = ftSession.getSearchFactory().buildQueryBuilder();
EntityContext entityContext = qbc.forEntity(Book.class);
QueryBuilder qb = entityContext.get();
org.apache.lucene.search.Query q = qb.keyword().wildcard().onField("title")
.ignoreAnalyzer().matching("*" + QueryParser.escape("irsT WiLdCaRd q").toLowerCase() + "*").createQuery();
FullTextEntityManager ftEm = org.hibernate.search.jpa.Search.getFullTextEntityManager(em);
final FullTextQuery ftq = ftEm.createFullTextQuery(q, Book.class);
List list = ftq.getResultList();
キーワード指向であり、フレーズにワイルドカードを使用したアナログがないため、機能しません。WildcardQuery を直接使用しても機能しません(