使用Hibernate Search进行高级搜索

SB.*_*SB. 7 hibernate hibernate-search advanced-search

在我的一个应用程序中,我将在多个字段/列上执行搜索.它是一个高级搜索,有超过20个字段,用户可以使用这些字段搜索结果.例如,用户可以基于搜索预订

  1. 预订ID
  2. 乘客姓名
  3. 乘客年龄
  4. 从位置
  5. 到位置
  6. 预订状态
  7. 航空公司的名称

和13个这样的领域.

我想知道是否

  1. Hibernate Search可以而且应该在这里使用吗?如果是这样,怎么样?我无法找到使用Hibernate Search进行这种复杂搜索的示例.

  2. 我可以简单地使用Hibernate而不是Hibernate搜索,并根据参数的数量设计多线程搜索.这是个好主意吗?

  3. 这里可以使用Hibernate Filters吗?

有人可以提供输入或参考链接吗?

atr*_*ain 2

对于此类查询,我通常使用Criteria带有表单对象的查询。然后,我检查null每个传递的表单字段,如果没有null,则Restriction使用该字段将另一个字段添加到查询中。使用Criteria查询可以使 Java 代码保持非常干净,并消除混乱的字符串连接。您的案例的一个例子:

// Form object
public class bookingSearchForm {
    private String bookingId;
    public getBookingId()...
    public setBookingId()...
}

// Hibernate
Criteria criteria = getSession().createCriteria(Booking.class);
if(form.getBookingId() != null) {
    criteria.add(Restrictions.eq("bookingId", form.getBookingId()));
}
criteria.list();
Run Code Online (Sandbox Code Playgroud)