【问题标题】:Apache lucene: Sorting numbers and german umlautsApache lucene:对数字和德语变音符号进行排序
【发布时间】:2018-11-22 22:00:29
【问题描述】:

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

U, Ü, Z 

而不是:

U, Z, Ü

就像 lucene 默认的一样。

对数字进行排序

1, 2, 3, 100, 101, 102 

又不像​​ lucene 默认的:

1, 100, 101, 102, 2, 3

我怎样才能以这种方式解决条目?

谢谢!

【问题讨论】:

    标签: java apache lucene


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 2016-04-25
      • 2011-12-01
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多