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

Apache lucene: Sorting numbers and german umlauts

Apache lucene 中是否有一个选项可以正确地对数字和德语变音符号进行排序,这意味着,例如 “Ü”应该解释为"Ue",表示排序顺序为

U, Ü, Z 

而不是:

U, Z, Ü

喜欢 lucene 默认值。

这样对数字进行排序
1, 2, 3, 100, 101, 102 

与 lucene 默认值不同:

1, 100, 101, 102, 2, 3

我该如何解决条目?

谢谢!

是的,这是可能的。首先关于德语,在 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 应该可以帮助你