我正在尝试使用 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;
...
答案 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文件。那里有什么吗?如果您仍有问题,请发布您用于索引数据的代码。