这是我的第一次hibernate搜索尝试,所以我是新手。我有一个实体,我把它编入索引,所以我可以搜索名称字段。每当他们搜索任何返回0结果的东西时,我的队友都在我的机器上工作,尽管还有其他的hibernate搜索部分在他们的最后工作正常
我使用的查询看起来像这样
public List<Agency> findByText(String text) {
FullTextEntityManager ftManager = org.hibernate.search.jpa.Search.getFullTextEntityManager(entityManager);
try {
return ftManager
.createFullTextQuery(
new MultiFieldQueryParser(new String[] { "name" }, new StandardAnalyzer()).parse(text
+ "*"), Agency.class).getResultList();
} catch (ParseException e) {
log.error("Exception has occurred when trying to execute search", e);
}
return Collections.emptyList();
}
代理实体
@Entity
@Indexed
@Table(
name="Agency",
uniqueConstraints=
@UniqueConstraint(columnNames={"id", "name"})
)
public class Agency {
@Id
@GeneratedValue
private Long id;
@Field(index = Index.TOKENIZED, store = Store.NO)
private String name;
答案 0 :(得分:1)
我建议您使用Luke检查Lucene索引。这将允许您查看索引的内容,以及您可以期望返回的内容。
可能是您没有正确设置事务,并且数据库更改未反映在索引中。
此外,如果您不熟悉Hibernate,那么查看索引实际包含的内容会很有趣,也很有启发性。