Apache lucene:对数字和德语变音符号进行排序

时间:2018-11-22 22:00:29

标签: java apache lucene

Apache lucene中是否可以正确排序数字和德语变音符号,例如 “Ü”应解释为“ Ue”,这意味着排序顺序为

U, Ü, Z 

而不是:

U, Z, Ü

像lucene的默认值。

对数字进行排序

1, 2, 3, 100, 101, 102 

和Lucene的默认值不同:

1, 100, 101, 102, 2, 3

我该如何解决这些问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

是的,有可能。首先,关于德语,在Lucene中处理语言的最佳方法是使用ICU library。对于Lucene,我们具有相应的 lucene-analyzers-icu 依赖项。

您可以使用 ICUCollat​​ionDocValuesField 对值进行排序。

final Collator instance = Collator.getInstance(ULocale.GERMAN);
final ICUCollationDocValuesField contents = new ICUCollationDocValuesField("contents", instance);

稍后使用此字段创建文档,您以后可以在此字段上进行排序并获得预期的结果(例如U,Ü,Z)

可以找到完整的示例there

关于数字的排序-您只需要将它们排序为数字SortField.Type.INT而不是字符串(看起来就像在做),{