我将Lucene配置为按test
列中的值搜索我的Hibernate模型:
@Entity
@Table(name = "TEST")
@Audited
@Indexed
public class Test {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@Column(name = "TEST")
@Field(index = Index.YES,analyze = Analyze.YES,store = Store.NO)
private String test;
...
}
在数据库中,测试模型包含以下测试列值:
我创建了以下代码,用于按列值搜索:
String queryValue = "AB";
QueryBuilder qb = org.hibernate.search.jpa.Search.getFullTextEntityManager(em).getSearchFactory().buildQueryBuilder().forEntity(Test.class).get();
Query query = qb.all().createQuery();
BooleanJunction<BooleanJunction> conjuction = qb.bool();
String searchValue = new StringBuilder().append("*").append(queryValue .toLowerCase()).append("*").toString();
conjuction.should(qb.keyword().wildcard().onFields(new String[] { "test"}).matching(searchValue).createQuery());
query = conjuction.createQuery();
FullTextQuery textQuery = org.hibernate.search.jpa.Search.getFullTextEntityManager(em).createFullTextQuery(query, Test.class);
return textQuery.getResultList();
上面的代码可以找到值AB
,Lucene会返回2条记录,但是当我查找AB=
时,它会返回空结果。
更新
这里是索引编码的代码:
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em);
fullTextEntityManager.createIndexer().startAndWait();
你知道为什么我得到空的结果,因为Lucen应该给我2条记录吗?我怎么解决它?