gpt4 book ai didi

java - 根据数字字段对 Lucene 中的搜索结果进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:32:33 24 4
gpt4 key购买 nike

我有一些包含两个字段的文档:文本、计数。

我已经使用 Lucene 来索引文档,现在我想在文本中搜索并获得按计数降序排序的结果。我该怎么做?

最佳答案

Apache Lucene 的默认搜索实现返回按分数排序的结果(最相关的结果在前),然后按 id(最早的结果在前)。

可以在查询时使用附加的排序参数自定义此行为。

TopFieldDocs Searcher#search(Query query, Filter filter, int n, Sort 排序)

Sort 参数指定用于排序的字段或属性。默认实现是这样定义的:

new Sort(new SortField[] { SortField.FIELD_SCORE, SortField.FIELD_DOC });

要更改排序,您只需将字段替换为您想要的字段即可:

new Sort(new SortField[] {
SortField.FIELD_SCORE,
new SortField("field_1", SortField.STRING),
new SortField("field_2", SortField.STRING) });

这听起来很简单,但只有满足以下条件才会起作用:

  • 您必须指定 SortField(String field, inttype) 让 Lucene 找到你的领域,即使这是正常的可选。
  • 排序字段必须被索引但不能标记化:

    document.add (new Field ("byNumber", Integer.toString(x), Field.Store.NO, Field.Index.NOT_ANALYZED));

  • 排序字段内容只能是纯文本。如果只有一个元素在使用的其中一个字段中具有特殊字符或重音对于排序,整个搜索将返回未排序的结果。

检查这个tutorial .

关于java - 根据数字字段对 Lucene 中的搜索结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21965778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com