Hibernate Search(Lucene)在' ='的情况下返回空结果在字符串

时间:2016-12-03 17:54:22

标签: lucene hibernate-search

我将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;

    ...
}

在数据库中,测试模型包含以下测试列值:

  1. AB = ABC
  2. AB = BCD
  3. 我创建了以下代码,用于按列值搜索:

    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条记录吗?我怎么解决它?

0 个答案:

没有答案