有一个lucene Field的构造函数:
Field(String name, String value, Store store, Index index)
例如,我可以通过以下方式创建一个新字段:
Field f1 = new Field("text", "The text content", Field.Store.YES, Field.Index.ANALYZED);
我不确定第四个参数的含义:Index
如果我将其设置为Index.No
,那么是否需要将此字段添加为“字段”?
因为在我看来,一旦一个属性被声明为一个字段,它应该被索引,如果不是,那么你为什么要将它声明为一个字段?
查询和搜索有什么区别?
答案 0 :(得分:21)
如Lucene FAQ中所述:
存储,标记,索引和矢量有什么不同?
- 存储=存储在Lucene索引中的as-is值
- 使用指定的分析器分析Tokenized =字段 - 发出的标记已编入索引
- 索引=文本(按关键字字段原样,或来自标记化字段的标记)可搜索(也称为倒置)
- 向量=每个文档的术语频率以易于检索的方式存储在索引中。
您可以直接索引字段内容而不存储它,该字段也可以搜索,只是无法突出显示结果,因为突出显示需要原始邮件内容,应该存储。
答案 1 :(得分:21)
存储的字段是ask Lucene to give you back a document时返回的字段。它们保持一个字段的原始值,没有分析。您可以使用它们将文档呈现给用户(不一定是所有字段)。
未编入索引的存储字段可用于存储有关用户不会用于查询索引的文档的元数据。一个示例可能是文档来自的数据库ID。用户永远不会使用此ID,因为他们不知道它,因此索引它通常是无用的。但是如果你存储它,那么你可以使用它在运行时从db收集额外的信息。
查询和搜索之间的区别是相当主观的。对于我自己来说,搜索实际上是在索引中搜索的一般行为,而查询是实际的query string used to search the index。