Yes I tried to omit it and to set it to false, it doesn't change anything...
I've logged the return of the query.list() method, and I can see that that return is in the wrong order (independently of that boolean parameter), so it's not a bad manipulation from me with the returned elements.
But, in the case of a bug in my code, I put you my whole logic to interrogate lucene.
Code:
this.results = 0;
List<?> allResultsList = null;
QueryParser parser = null;
parser = new QueryParser(Version.LUCENE_29, this.defaultSearchAttribute, new SimpleAnalyzer());
if (this.defaultOperator.equals("AND")) {
parser.setDefaultOperator(Operator.AND);
} else {
parser.setDefaultOperator(Operator.OR);
}
Query luceneQuery = null;
Session session = sessionFactory.openSession();
Transaction transaction = null;
try {
luceneQuery = parser.parse(this.search);
logger.debug("Lucene Generated query = " + luceneQuery.toString());
transaction = session.beginTransaction();
logger.debug("Getting Session");
FullTextSession ftSession = Search.getFullTextSession(session);
logger.debug("Creating full text Query");
FullTextQuery query = ftSession.createFullTextQuery(luceneQuery, entityType);
this.mustSortByName = true;
if (this.mustSortByName) {
SortField field = new SortField("enterprise_name", SortField.STRING, false);
Sort s = new Sort(field);
query.setSort(s);
}
this.results = query.getResultSize();
query.setFirstResult(this.pageNumber * this.maxResults).setMaxResults(this.maxResults + 1);
allResultsList = query.list();
if (allResultsList != null) {
for (Object o : allResultsList) {
logger.debug("Found : " + o);
}
}
logger.debug("Lucene query result size :" + allResultsList.size());
int results = allResultsList.size();
if (results > this.maxResults) {
this.setHasNextPage(true);
allResultsList.remove(this.maxResults);
} else {
this.setHasNextPage(false);
}
transaction.commit();
} catch (ParseException ex) {
logger.warn("Unable to parse query ", ex);
} catch (HibernateException ex) {
logger.warn("Hibernate Error", ex);
transaction.rollback();
}
session.close();
return allResultsList;
If you see anything strange / bad, do not hesitate :) Thanks