Apache lucene中是否可以正确排序数字和德语变音符号,例如 “Ü”应解释为“ Ue”,这意味着排序顺序为
U, Ü, Z
而不是:
U, Z, Ü
像lucene的默认值。
对数字进行排序
1, 2, 3, 100, 101, 102
和Lucene的默认值不同:
1, 100, 101, 102, 2, 3
我该如何解决这些问题?
谢谢!
答案 0 :(得分:0)
是的,有可能。首先,关于德语,在Lucene中处理语言的最佳方法是使用ICU library。对于Lucene,我们具有相应的 lucene-analyzers-icu 依赖项。
您可以使用 ICUCollationDocValuesField 对值进行排序。
final Collator instance = Collator.getInstance(ULocale.GERMAN);
final ICUCollationDocValuesField contents = new ICUCollationDocValuesField("contents", instance);
稍后使用此字段创建文档,您以后可以在此字段上进行排序并获得预期的结果(例如U,Ü,Z)
可以找到完整的示例there
关于数字的排序-您只需要将它们排序为数字SortField.Type.INT
而不是字符串(看起来就像在做),{1>