在SpringWeb上使用Lucene进行Hibernate搜索

在SpringWeb上使用Lucene进行Hibernate搜索,lucene,hibernate-search,Lucene,Hibernate Search,我正在开发一款Spring3.2WebApp。我希望有人能帮我做这件事 我尝试在“Site”db表的“name”字段中获取所有带有“test”单词的站点 站点表行: 身份证号码:1 名称:“测试” Site.class @Entity @Indexed @Spatial @Table(name = "site") public class Site implements Serializable { @Id @GeneratedValue(strategy = Generat

我正在开发一款Spring3.2WebApp。我希望有人能帮我做这件事

我尝试在“Site”db表的“name”字段中获取所有带有“test”单词的站点

站点表行:

身份证号码:1 名称:“测试”

Site.class

@Entity
@Indexed
@Spatial
@Table(name = "site")
public class Site implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private int id;
    @NotNull
    @Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO)
    private String name;

...
}
刀类

@Override
public List<Site> getSite(String word) {

    //word = "test" at this point on debug.

    QueryBuilder builder = Search.getFullTextSession(this.getCurrentSession()).getSearchFactory()
            .buildQueryBuilder().forEntity(Site.class).get();

    org.apache.lucene.search.Query luceneQuery = builder.keyword().onField("name").matching(word).createQuery();

    org.hibernate.Query hibQuery = Search.getFullTextSession(this.getCurrentSession()).createFullTextQuery(luceneQuery, Site.class);

    return hibQuery.list();
}
@覆盖
公共列表getSite(字符串字){
//word=“test”在调试的这一点上。
QueryBuilder builder=Search.getFullTextSession(this.getCurrentSession()).getSearchFactory()
.buildQueryBuilder().forEntity(Site.class).get();
org.apache.lucene.search.Query luceneQuery=builder.keyword().onField(“name”).matching(word.createQuery();
org.hibernate.Query hibQuery=Search.getFullTextSession(this.getCurrentSession()).createFullTextQuery(luceneQuery,Site.class);
返回hibQuery.list();
}
getCurrentSession()是SessionFactory Springbean返回的会话


问题是此方法始终返回空列表。

问题解决后,我必须在lucene查询之前调用createIndexer().startAndWait()