Lucene查询返回我不期望的东西

时间:2010-11-05 10:19:49

标签: java indexing lucene

我正在查询一个Lucene索引文件,我没有构建这个结构。此索引包含具有以下结构的字段的文档:

alt text

正如您所看到的,'type'字段始终为空,但'all'字段包含以某种方式格式化的数据,以便可搜索并包含type=ta种语法。

奇怪的是,当我使用type:ta查询此索引时,即使类型字段始终为空,它实际上也会输出一些内容。

这里发生了什么?

修改

在谷歌搜索后,我发现了一个奇怪的概念(至少对我来说,来自SQL数据库背景),数据可以以不同的方式存储(Store.YES和Store.NO)。 Lucene indexing: Store and indexing modes explained

这对我来说是一个非常不寻常的概念,因为我找不到很多不存储数据的理由。使用Store.NO背后的原因是什么?即使我没有在任何地方显示数据,我也很可能总是想要那里的数据......我的意思是如果数据被索引,它必须存储,无论如何,对吗?

2 个答案:

答案 0 :(得分:1)

  

使用Store.NO背后的原因是什么?

考虑查询:

  1. 哪些文件包含“foo”一词?
  2. 文件'1234'包含哪些条款?
  3. 第一个索引将映射term -> document。第二个将映射document -> term。大多数人只想使用Lucene作为第一种类型的查询,因此他们只构建第一种类型的索引(Store.NO)。如果要执行第二种类型的查询,则需要构建两种类型的索引。这占用了更多空间。 (理论上可以循环遍历所有术语并找出文档而不实际构建此索引,但它真的慢。)

    “反向索引”可能是比“商店”更合适的名称。

答案 1 :(得分:0)

什么lucene查询语法:有很多转向字符

  

类型: 'TA'

引用了thoe ..