2015-05-21 2 views
3

Использование:Как искать с несколькими параметрами в спящем Поиск 3.0.0.ga

  • Hibernate 3.2.7.ga
  • Hibernate-Search 3.0.0.ga
  • Hibernate-АННОТАЦИИ 3,3. 0.ga
  • Hibernate-фонда-Cnnotations 3.0.0.ga
  • Lucene-Core 2.9.4
  • Lucene-анализаторы 2.9.4
  • Lucene-Queryparser 2.9.4

Как можно искать с несколькими параметрами, такими как:

SELECT * 
FROM example 
WHERE column1 = "text1" 
AND (column2 = "text2" OR column2 ="text3") 

С Hibernate-Search documentation я только обнаружил, что пример поиска:

Session session = universalHibernateDAO.getHibernateSession(); 
FullTextSession fullTextSession = Search.createFullTextSession(session); 

Transaction tx = fullTextSession.beginTransaction(); 
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_29); 
MultiFieldQueryParser parser = new MultiFieldQueryParser(Version.LUCENE_29, 
    new String[]{"summary", "body"}, analyzer); 
org.apache.lucene.search.Query query = parser.parse("Java rocks!"); 
Query hibQuery = fullTextSession.createFullTextQuery(query, PscpExpedient.class); 
List<PscpExpedient> result = (List<PscpExpedient>)hibQuery.list(); 

tx.commit(); 

Будет идеально, если существуют каким-то образом сделать что-то вроде:

org.apache.lucene.search.Query query = parser.parse("column1: text1", 
                 "column2: text2 | text3"); 

Кроме того, если это возможно, будет приятно знать, как поиск «onlyOneword» и «text with multiple spaces»

Спасибо!

ответ

1

Попробуйте использовать BooleanQuery как это:

org.apache.lucene.search.Query query1 = ....; 
org.apache.lucene.search.Query query2 = ....; 
org.apache.lucene.search.Query query3 = ....; 

BooleanQuery booleanQuery = new BooleanQuery(); 

luceneBooleanQuery.add(query1, BooleanClause.Occur.MUST); 
luceneBooleanQuery.add(query2, BooleanClause.Occur.SHOULD); 
luceneBooleanQuery.add(query3, BooleanClause.Occur.SHOULD); 

FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery(booleanQuery, DomainClass.class); 

Он должен работать.

+0

Я попробую кое-что спросить. Спасибо за быстрый ответ. –

+0

Работал. Большое спасибо за вашу помощь ^.^ –

+0

Добро пожаловать, спасибо тоже –

Смежные вопросы