双值未使用 Lucene 7 编制索引
double value not indexed with Lucene 7
嗨,
我无法使用 Lucene 7 为双精度值建立索引。
执行后
public void indexDouble(Document document, String name, Double value) {
double val = (double) value;
document.add(new DoublePoint(name, val));
}
我正在与 Luke 检查索引值,该索引的值始终为空。
将 DoublePoint 添加到文档后(在我的例子中是 44),在调试时我可以看到该值已添加
DoublePoint <9xjcl4v4r:vq4ebgph8:44.0> stored<9xjcl4v4r:vq4ebgph8:44.0>
已存储,但我没有看到 'indexed' 标志。不确定这是否是问题所在,因为我以相同的方式对长值进行索引并且搜索正常。
有什么想法吗?
谢谢
老实说,我非常怀疑它是否像您描述的那样工作。
原因如下 - 所有 Point 类型,包括 DoublePoint 只是索引字段而不存储,所以它们甚至有JavaDoc 中的一句话:
An indexed double field for fast range filters. If you also need to
store the value, you should add a separate StoredField instance.
你在卢克中什么也看不到的原因也很简单。 Luke 本身并不是魔法,它只能向您显示值,如果它们被存储(事实并非如此)。但是,您仍然可以搜索它们,只是无法找回它们。
出于 debugging/retrieving 目的,您需要像这样添加另一个存储字段:
doc.add(new StoredField(“double_stored”, value));
嗨,
我无法使用 Lucene 7 为双精度值建立索引。 执行后
public void indexDouble(Document document, String name, Double value) {
double val = (double) value;
document.add(new DoublePoint(name, val));
}
我正在与 Luke 检查索引值,该索引的值始终为空。
将 DoublePoint 添加到文档后(在我的例子中是 44),在调试时我可以看到该值已添加
DoublePoint <9xjcl4v4r:vq4ebgph8:44.0> stored<9xjcl4v4r:vq4ebgph8:44.0>
已存储,但我没有看到 'indexed' 标志。不确定这是否是问题所在,因为我以相同的方式对长值进行索引并且搜索正常。
有什么想法吗?
谢谢
老实说,我非常怀疑它是否像您描述的那样工作。
原因如下 - 所有 Point 类型,包括 DoublePoint 只是索引字段而不存储,所以它们甚至有JavaDoc 中的一句话:
An indexed double field for fast range filters. If you also need to store the value, you should add a separate StoredField instance.
你在卢克中什么也看不到的原因也很简单。 Luke 本身并不是魔法,它只能向您显示值,如果它们被存储(事实并非如此)。但是,您仍然可以搜索它们,只是无法找回它们。
出于 debugging/retrieving 目的,您需要像这样添加另一个存储字段:
doc.add(new StoredField(“double_stored”, value));