2009-05-07 8 views
3

私はHibernate検索を使用しています。Hibernate Search - すべてのレコードをデフォルトでリストする方法

jspページに検索テキストボックスがあります。テキストを入力すると正しい結果が返されます。 しかし、空のメッセージを残して検索ボタンをクリックすると、レコードが返されませんでした。

コード:

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

検索テキストボックスが空の場合、私はちょうど、 "*" を入れました。すべてのレコードを返すようにします。 今、私にとってうまくいっています。 これは私のコードです。

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); 
    } 
+0

のためのサンプルコードですされてあなたは、単に検索/ luceneのを回避し、休止してまっすぐ行くことができる: 'リスト結果=セッションを。 createCriteria(UserVO.class).list(); ' – DJDaveMark

4

AllContext org.hibernate.search.query.dsl.QueryBuilder.all()(通常ブールクエリと混合して)すべての文書を照合

クエリ。

これは、あなたが

を使用する必要がある方法はここにあなたの問題

@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(); 
} 
関連する問題