Lucene 索引字段不可搜索
Lucene index field not searchable
所以我的 Lucene 索引文档中有一个名为 "Field1" 的字段(出于所有意图和目的)。
当我打开Luke,浏览文档时,我看到大多数文档都有这个字段。但是,当我切换到搜索选项卡并输入 Field1:parameterValue
时,我得到的搜索结果为零。
在做索引时,对于文档,我有
doc.Add(new Field("Field1", field1, Field.Store.YES, Field.Index.ANALYZED));
为什么我的字段无法被搜索到?顺便说一句,我也找不到任何关于 Luke 的文档来解释文档记录中 "IdfpTSVopNLB#" 列的内容。我认为此信息可能有用,因此对于具有此字段的记录之一,列值为 IdfpTS---N---
,"Norm" 列为 4.0
"IdfpTSVopNLB#" 字段是标志的集合。您应该在 Luke 中看到它的密钥:
我猜你的搜索失败的原因是你没有考虑你的分析。例如,对于您的示例查询:Field1:parameterValue
,如果该字段由 StandardAnalyzer 分析(并且查询不是分析器或关键字分析),您将不会得到任何结果。这是因为 "parameterValue" 会被分析器小写,所以实际可搜索的术语应该是 "parametervalue"。
在搜索选项卡中,您应该会看到 select 供 Luke 用于查询解析的分析器。如果您使用与索引数据相同的分析器,您可能会看到更好的结果。
事实证明,这是执行此操作的正确方法。我只需要删除整个索引并从头开始重建它以获取新值。它不会自动更新现有索引。
所以我的 Lucene 索引文档中有一个名为 "Field1" 的字段(出于所有意图和目的)。
当我打开Luke,浏览文档时,我看到大多数文档都有这个字段。但是,当我切换到搜索选项卡并输入 Field1:parameterValue
时,我得到的搜索结果为零。
在做索引时,对于文档,我有
doc.Add(new Field("Field1", field1, Field.Store.YES, Field.Index.ANALYZED));
为什么我的字段无法被搜索到?顺便说一句,我也找不到任何关于 Luke 的文档来解释文档记录中 "IdfpTSVopNLB#" 列的内容。我认为此信息可能有用,因此对于具有此字段的记录之一,列值为 IdfpTS---N---
,"Norm" 列为 4.0
"IdfpTSVopNLB#" 字段是标志的集合。您应该在 Luke 中看到它的密钥:
我猜你的搜索失败的原因是你没有考虑你的分析。例如,对于您的示例查询:Field1:parameterValue
,如果该字段由 StandardAnalyzer 分析(并且查询不是分析器或关键字分析),您将不会得到任何结果。这是因为 "parameterValue" 会被分析器小写,所以实际可搜索的术语应该是 "parametervalue"。
在搜索选项卡中,您应该会看到 select 供 Luke 用于查询解析的分析器。如果您使用与索引数据相同的分析器,您可能会看到更好的结果。
事实证明,这是执行此操作的正确方法。我只需要删除整个索引并从头开始重建它以获取新值。它不会自动更新现有索引。