java - Lucene 6 - 使用术语词汇表存储数字字段的推荐方法

标签 java solr lucene

在 Lucene 6 中,LongFieldIntField 已重命名为 LegacyLongFieldLegacyIntField,已弃用 JavaDoc建议改用 LongPointIntPoint 类。

但是,似乎不可能建立这些 XPoint 字段的术语词汇表(=枚举所有不同的值)。 Lucene mailing list entry证实了

PointFields are different than conventional inverted fields, so they also don't show up in fields(). You cannot get a term dictionary from them.

作为第三种选择,可以添加 NumericDocValuesField 类的字段,据我所知,它也没有提供构建术语词汇表的方法。

鉴于构建术语词汇表的要求,在 Lucene 6 中是否有一种未弃用的索引数字字段的方法?

最佳答案

在我的例子中,我只是将字段复制一次作为 LongPoint,一次作为存储的非索引字段,这两个字段具有相同的名称。

我的情况大致是

doc.add(new NumericDocValuesField("ts", timestamp.toEpochMilli()));
doc.add(new LongPoint("ts", timestamp.toEpochMilli()));
doc.add(new StoredField("ts", timestamp.toEpochMilli()));

虽然有点难看,但是可以把它想象成给存储的字段加一个索引。 这些字段类型可以互不干扰地使用相同的名称。

用于基于文档年龄的评分的 DocValues 和用于范围查询的 LongPoint。

关于java - Lucene 6 - 使用术语词汇表存储数字字段的推荐方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42482451/

相关文章:

当没有定义或定义多个搜索字段时,Azure 搜索无法返回预期结果

c# - 如何使用整数 id 重新索引文档?

java - 在 JAVA 中使用 CAS 服务器进行单点登录

Javascript 分面搜索客户端(框架)

c# - QA 环境中的 SOLR 错误 - Sitecore

java - 无论如何,是否可以通过任何api获取java中solr conf文件夹的位置。

search - 如何使用 HitCollector 按字段值对 Lucene 结果进行排序?

java - 如何知道方法是 N 还是 N^2

java - 异步 HTTP 请求,排队请求

java - jose4j 是否自动处理 Azure 签名 key 翻转?