【问题标题】:How to search with multiple parameters in Hibernate Search 3.0.0.ga如何在 Hibernate Search 3.0.0.ga 中使用多个参数进行搜索
【发布时间】:2015-08-02 16:54:15
【问题描述】:

使用:

  • 休眠 3.2.7.ga
  • 休眠搜索 3.0.0.ga
  • Hibernate-Annotations 3.3.0.ga
  • Hibernate-Commons-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”和“带有多个空格的文本”

谢谢!

【问题讨论】:

    标签: java lucene hibernate-search


    【解决方案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);
    

    它应该可以工作。

    【讨论】:

    • 我会试着问点什么。感谢您的快速响应。
    • 工作。非常感谢您的帮助^.^
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    相关资源
    最近更新 更多