当我们尝试使用字段类型“IntPoint”对整数值进行索引时,这些值似乎没有正确传输到我们的 Lucene 索引中。
我们正在使用 Lucene 6.0。
根据 Lucene 文档的代码片段:
doc.add(new IntPoint(LENGTH2, 17));
应将值为“17”的 LENGTH2 文档字段添加到我们的可索引文档中。
不幸的是,我们的索引字段 LENGHT2 中没有值。
我们还尝试使用已弃用的字段类型“LegacyIntField”进行此操作。通过这种类型,我们在索引字段中得到了一些神秘的符号,例如:
950 length h(5j
950 length pT
950 length xj
950 length `PkU2
对于这种类型,我们使用了以下代码:
LegacyIntField intField = new LegacyIntField(LENGTH,0,Field.Store.NO);
intField.setIntValue(17);
doc.add(intField);
您知道这个问题的解决方案吗?
添加:你有一个工作示例,其中包括 IntPoint 的索引和搜索吗?
我们尝试了一下,但似乎不起作用。Lucene IntPoint 索引的 Java 代码 https://i.stack.imgur.com/cwez2.png
我们也尝试在这个领域做一些搜索。但结果与我们的预期不符。
QueryParser parser = new MultiFieldQueryParser(fields,analyzer);
Query query = parser.parse("content:" + queryString);
Query queryNumeric = IntPoint.newRangeQuery(Indexer.LENGTH2, 0, 5);
Builder builder = new Builder();
builder.add(query, Occur.MUST);
builder.add(queryNumeric, Occur.MUST);
BooleanQuery booleanQ = builder.build();
TopDocs hits2 = is.search(booleanQ, 1000);
System.out.print("short: " + hits2.totalHits);