1

因此,我的 Lucene 索引文档中有一个名为“Field1”的字段(用于所有意图和目的)。

当我打开 Luke 并浏览文档时,我看到大多数文档都有这个字段。但是,当我切换到搜索选项卡并输入时,Field1:parameterValue我得到零搜索结果。

在进行索引时,对于文档,我有

doc.Add(new Field("Field1", field1, Field.Store.YES, Field.Index.ANALYZED));

为什么我的字段无法被搜索到?顺便说一句,我也找不到关于 Luke 的任何文档来解释文档记录中的“IdfpTSVopNLB#”列是什么。我认为此信息可能有用,因此对于具有此字段的记录之一,列值是IdfpTS---N---并且“Norm”列是4.0

4

2 回答 2

2

“IdfpTSVopNLB#”字段是标志的集合。你应该在 Luke 中看到它的关键:

卢克标记关键位置

我猜你的搜索失败的原因是因为你没有考虑你的分析。例如,对于您的示例查询:Field1:parameterValue如果该字段由 StandardAnalyzer 分析(并且查询不是分析器或关键字分析),您将不会得到任何结果。这是因为“parameterValue”会被分析器小写,所以实际的可搜索词应该是“parametervalue”。

在搜索选项卡中,您应该会看到一个位置,可以为 Luke 选择分析器以用于查询解析。如果您使用与索引数据相同的分析器,您可能会看到更好的结果。

于 2016-09-21T16:45:50.503 回答
-1

事实证明,这是执行此操作的正确方法。我只需要删除整个索引并从头开始重建它以获取新值。它不会自动更新现有索引。

于 2016-09-22T14:30:09.673 回答