Java Hibernate搜索方面以小写形式返回值
我是一个休眠搜索方面的新手。我正在使用facets,我注意到您只能返回Java Hibernate搜索方面以小写形式返回值,java,lucene,hibernate-search,Java,Lucene,Hibernate Search,我是一个休眠搜索方面的新手。我正在使用facets,我注意到您只能返回字段名的值 我遇到的问题与我的标准分析器用小写字母索引我的值有关。到目前为止,一切都很好,直到我需要显示数据 在原始情况下,如何从facet返回值,例如Ford,Chevrolet等,而不是Ford,Chevrolet 是否有一种从数据库获取值的有效方法,即从值返回pk并从数据库构建实际对象?还是建议将值以原始格式存储在索引中,然后执行getFacetQuery来获取它?我对getFacetQuery一无所知,所以这可能是不
字段名的值
我遇到的问题与我的标准分析器用小写字母索引我的值有关。到目前为止,一切都很好,直到我需要显示数据
在原始情况下,如何从facet返回值,例如Ford
,Chevrolet
等,而不是Ford
,Chevrolet
是否有一种从数据库获取值的有效方法,即从值返回pk并从数据库构建实际对象?还是建议将值以原始格式存储在索引中,然后执行getFacetQuery来获取它?我对getFacetQuery一无所知,所以这可能是不可能的
范例
@Entity
public class Make {
@Field(store = Store.no)
private String name
}
价值观
database: Chevy|Ford
index: chevy|ford
小平面
结果
chevy|ford
但是我想要数据库里的原始案例
请推荐一种最佳做法。多谢各位 看来我的问题的解决方案是为我的索引提供另一个未分析的字段。范例
实体
private class Make {
@Fields({
@Field(name = "name", analyzer = @Analyzer(definition = "searchtokenanalyzer")),
@Field(name = "label", analyze = Analyze.NO)
})
private String name;
}
方面查询
@Override
public FacetingRequest getMakeFacetRequest(QueryBuilder builder) {
FacetingRequest facetingRequest = builder.facet()
.name("make")
.onField("make.label")
.discrete()
.orderedBy(FacetSortOrder.FIELD_VALUE)
.includeZeroCounts(true)
.maxFacetCount(10)
.createFacetingRequest();
return facetingRequest;
}
@Override
public FacetingRequest getMakeFacetRequest(QueryBuilder builder) {
FacetingRequest facetingRequest = builder.facet()
.name("make")
.onField("make.label")
.discrete()
.orderedBy(FacetSortOrder.FIELD_VALUE)
.includeZeroCounts(true)
.maxFacetCount(10)
.createFacetingRequest();
return facetingRequest;
}