我从未使用它,但有一个插件可以满足您的需求:ICU collation plugin。
您必须使用icu_collation令牌过滤器,它会将令牌转换为排序键。因此,您需要在Hibernate Search中使用单独的@Field(例如myField_sort)。
您可以使用@Field(name = "myField_sort", analyzer = @Analyzer(definition = "myCollationAnalyzer"))将特定分析仪分配到您的字段,并在您的某个实体上使用类似的内容定义此分析器(类型,参数):
@Entity
@Indexed
@AnalyzerDef(
name = "myCollationAnalyzer",
filters = {
@TokenFilterDef(
name = "polish_collation",
factory = ElasticsearchTokenFilterFactory.class,
params = {
@Parameter(name = "type", value = "'icu_collation'"),
@Parameter(name = "language", value = "'pl'")
}
)
}
)
public class MyEntity {
现在肯定有点笨拙,但是在normalizers and analyzer definition providers的下一个Hibernate Search版本中,分析器配置会更清晰。
注意:像往常一样,您的字段需要声明为可排序(@SortableField(forField = "myField_sort"))。