我正在使用Lucene的WildcardQuery执行查询,但它不起作用

时间:2012-10-12 09:38:52

标签: lucene hibernate-search

我正在使用Lucene的WildcardQuery执行查询。但我不知道为什么找不到结果。 以下是详细信息。

以下是创建WildcardQuery的代码,以及字段名称的记录:'全名'值:'ABC123DD456CC'是已存在的索引文档。

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();

列表为空,我确信Lucene Document中存在'ABC123DD456CC'。 我只想用WildcardQuery来做。任何帮助都会感激不尽!

1 个答案:

答案 0 :(得分:1)

我相信最后一行应该是:

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

由于结果从0开始编号。如果只有一个文档与该搜索匹配,这似乎已经足够了,这可能解释了为什么你什么都没得到(跳过第一个也是唯一一个结果,在索引0)。