我正在阅读lucene in action 2nd edition,考虑到我们现在的版本是6.x,这本书的相关性如何?
我正在阅读它,并注意到有关Field.Index的API发生了变化。现在如何在6.x中完成?
doc.add(new Field("city", "Den Haag",
Field.Store.YES,
Field.Index.ANALYZED));
答案 0 :(得分:1)
我看来已经过时了。
您通常应该使用Field的不同子类。在Javadoc文档中,您可以看到不同类型的字段: http://lucene.apache.org/core/6_5_0/core/org/apache/lucene/document/Field.html
根据您的需要使用此类型并正确阅读Javadoc。 有些相关信息如StringField将不会被标记化。
以下是一些基于代码示例的示例:
Stringfield:
luceneDocument.add(new StringField("name", "value", Field.Store.YES));
的TextField:
luceneDocument.add(new TextField("name", "value", Field.Store.YES));
StoredField with int:
luceneDocument.add(new StoredField("name", intValue));
如果此字段不符合您的需要,您可以自由覆盖Field并创建自己的Field类,但我从未使用过它。
答案 1 :(得分:1)
基本概念应该是合理有用的。关于分析(这似乎是一个常见的绊脚石)之类的事情的一般信息将与当前版本大致相似。
然而,代码可能会过时,如果你想让它工作,你应该期望必须大量修改它。自3.X以来,对API进行了相当大的更改,您只找到其中一个,如何定义字段,在4.0中进行了大修。如果你想使代码工作,我建议你准备好阅读6.6 API,并提供一个很好的转移到迁移指南:打开读者和作者,定义字段,创建查询和编写自定义分析器是自3.X以来以不兼容方式发生变化的一些核心任务。
对于您给出的示例,您可以将其替换为:
doc.add(new TextField("city", "Den Haag", Field.Store.YES));
请参阅4.0迁移指南中标题为“从Field实例中分离IndexableFieldType”的部分。