gpt4 book ai didi

java - Hibernate Search 方面返回小写的值

转载 作者:行者123 更新时间:2023-12-01 12:34:57 24 4
gpt4 key购买 nike

我是 Hibernate Search 方面的新手。我正在使用构面,我注意到您只能返回 value fieldName

http://docs.jboss.org/hibernate/search/4.2/api/

我遇到的问题与我的标准分析器以小写形式索引我的值有关。到目前为止一切都很好,直到我需要显示数据。

如何从原始情况下的构面返回值,例如 Ford , Chevrolet等等而不是ford , chevrolet

是否有一种有效的方法可以通过从值返回 pk 来从数据库获取值并从数据库构建实际对象?或者是否建议将值以其原始格式存储在索引中并执行 getFacetQuery 来获取它?我对 getFacetQuery 一无所知,所以这可能是不可能的。

示例

@Entity
public class Make {

@Field(store = Store.no)
private String name

}

database: Chevy|Ford
index: chevy|ford

方面

public FacetingRequest getMakeFacetRequest(QueryBuilder builder) {
return builder.facet()
.name("make")
.onField("make.name")
.discrete()
.orderedBy(FacetSortOrder.FIELD_VALUE)
.includeZeroCounts(false)
.maxFacetCount(10)
.createFacetingRequest();
}

结果

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;
}

关于java - Hibernate Search 方面返回小写的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25667175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com