Hibernate Search - List All Default Entries

I use search in sleep mode.

I have a search text box on my jsp page. If I enter some text, it will return the correct result. But if I leave a blank message and click the search button, it does not return any records.

Code:

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();

String searchQuery = "Admin";
String[] userFields = {"firstName", "lastName", "role_groupName", "userId"};
QueryParser parser = new MultiFieldQueryParser(userFields, new StandardAnalyzer());
org.apache.lucene.search.Query luceneQuery;
try
{
    luceneQuery = parser.parse(searchQuery);
}
catch (ParseException e) 
{
    throw new RuntimeException("Unable to parse query: " + searchQuery, e);
}

FullTextSession ftSession = Search.getFullTextSession(session);
org.hibernate.Query query = ftSession.createFullTextQuery(luceneQuery, UserVO.class);

List results = query.list();
System.out.println("Result size:" + results.size());    
+3
source share
2 answers

I just put "*" if the search text box is empty. So it returns all records. Now it works great for me. This is my code.

try
{
    if(searchText == null || searchText.trim().length()==0)
    {
        searchText = "*";
    }
        luceneQuery = parser.parse(searchText);
    }
    catch (ParseException e)
    {
        throw new RuntimeException("Unable to parse query: " + searchText, e);
    }
+3
source

AllContext org.hibernate.search.query.dsl.QueryBuilder.all ()

A query matching all documents (usually mixed with a boolean query).

This is the method you need to use.

Here is sample code for your problem

@Test
public void testSearchUsingQueryBuilder() {
    FullTextSession fullTextSession = org.hibernate.search.Search
            .getFullTextSession(sessionFactory.getCurrentSession());
    QueryBuilder builder = fullTextSession.getSearchFactory()
            .buildQueryBuilder().forEntity(Country.class).get();
    org.apache.lucene.search.Query query = builder.all().createQuery();
    FullTextQuery jpaQuery = fullTextSession.createFullTextQuery(query,
            Country.class);
    System.out.println("Before HQL =" + startDate);
    List<Country> tempCountry = jpaQuery.list();
}
+4

Source: https://habr.com/ru/post/1707837/


All Articles