2

Lucene.のWildcardQueryを使ってクエリを実行していますが、結果が見つからない理由がわかりません。以下、詳細です。

WildcardQuery を作成するコードは次のとおりです。Field Name :'Full Name' Value:'ABC123DD456CC' のレコードは Index Document として存在します。

BooleanQuery booleanQuery = new BooleanQuery();
for (IndexQueryField field : quickSearchFields)
{
    Query query = new WildcardQuery(new Term(queryField.getFieldName(),"ABC*DD*CC"));
    booleanQuery.add(query, BooleanClause.Occur.SHOULD);
}

コードの一部: クエリの実行:

Session hibernateSession               = (Session) em.getDelegate();
FullTextSession session                = SwitchSession.getFullTextSession(hibernateSession, specifyIndexName);

// Set Hibernate flushMode
session.setFlushMode(FlushMode.MANUAL);
// Ignore Hibernate Cache
session.setCacheMode(CacheMode.IGNORE);

            FullTextQuery query = session.createFullTextQuery(booleanQuery,XXX.class);
List list = query.setFirstResult(1).setMaxResults(100).list();

リストが空です。「ABC123DD456CC」が Lucene ドキュメントに存在するはずです。WildcardQueryでやりたいだけです。どんな助けでも感謝します!

4

1 に答える 1

1

最後の行は次のようになります。

List list = query.setFirstResult(0).setMaxResults(100).list();

結果には0から番号が付けられているため、その検索に一致するドキュメントが1つしかない場合は、おそらく十分と思われますが、何も得られない理由を説明している可能性があります(インデックス0で、最初で唯一の結果をスキップしました)。

于 2012-10-12T16:31:09.513 に答える