Lucene搜索没有返回结果

时间:2013-08-21 14:28:23

标签: java hibernate lucene hibernate-search

我正在尝试使用 hibernate-search-4.3.0.Final.jar 创建一个hibernate全文搜索 此应用程序中没有错误,但是我的Lucene查询未查询查询DSL不会返回任何结果。 我的意思是它不会返回表中的任何行。任何人都可以帮助我。

这是我的功能:

OgmConfiguration cfgogm=new OgmConfiguration();
        cfgogm.configure("hibernate.cfg.xml");
        serviceregistry=new ServiceRegistryBuilder().applySettings(cfgogm.getProperties()).buildServiceRegistry();
        sessionfactory=cfgogm.buildSessionFactory(serviceregistry);         
        Session session= sessionfactory.openSession(); 


        FullTextSession fulltextsession= Search.getFullTextSession(session);
        QueryBuilder querybuilder=fulltextsession.getSearchFactory().buildQueryBuilder().forEntity(User.class).get();
        org.apache.lucene.search.Query lucenequery=querybuilder.keyword().onField("IdU").matching("96645").createQuery();
        org.hibernate.search.FullTextQuery fulltextquery=fulltextsession.createFullTextQuery(lucenequery, User.class);
        List result=fulltextquery.list();
        System.out.println(result.toString());

这是我的POJO课程:

@Entity
@Table(name="Users")
@Indexed
public class User {
    @Id
    @GeneratedValue(generator="mongodb_uuidgg")
    @Field(index = Index.YES,analyze = Analyze.NO,store = Store.NO)
    private String  _id;
    @Column(name="City")
    @Field(index = Index.YES,analyze = Analyze.NO,store = Store.NO)
    private String city;
    @Column(name="UserID")
    @Field(index = Index.YES,analyze = Analyze.NO,store = Store.NO)
    private int IdU;
...

3 个答案:

答案 0 :(得分:2)

我会使用Luke验证您的查询实际上是否从索引中返回了您想要的内容。

[编辑...] 如果Luke显示索引为空,则需要查看索引设置。

答案 1 :(得分:1)

最有可能的是,id字段的配置不正确。它应该是:

@Id
@GeneratedValue(generator="mongodb_uuidgg")
@DocumentId
private String  _id;

(即@DocumentId代替@Field)。

答案 2 :(得分:0)

您是否真的将数据编入索引?如果从现有数据库开始,则需要创建初始索引。您可以使用程序化索引API和质量索引器来创建初始索引。获得初始索引后,如果使用增量索引,索引将与数据库更改保持同步(通过Hibernate / JPA API提供更改)。

除此之外还要查看lg文件。那里有什么吗?如果您仍有问题,请发布您用于索引数据的代码。