Lucene in Action书和字段索引的相关性如何分析6.x中的参数API变化

时间:2017-07-24 02:19:21

标签: lucene

我正在阅读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));

2 个答案:

答案 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”的部分。