荷兰场问题

时间:2009-06-18 03:39:15

标签: lucene field nutch

我使用的是:

Field notdirectory = new Field("notdirectory","1", Field.Store.NO, Field.Index.UN_TOKENIZED);

和“notdirectory:1”之类的查询可以一直处理得很好。

但最近我更改了“Field.Store.NO,Field.Index.UN_TOKENIZED”以索引非数字字符串:

Field stateField = new Field("state","irn_" + state, Field.Store.NO, Field.Index.UN_TOKENIZED);

和“state:irn_CA”之类的查询再也无法获取任何结果,即使我通过hadoop日志查看“irn_CA”实际上已添加到“state”字段。

所以我怀疑满足“Field.Store.NO,Field.Index.UN_TOKENIZED”的字段,只有数字字段可以搜索,但我没有看到任何关于它的文档。

那么这是什么原因呢?

2 个答案:

答案 0 :(得分:2)

我认为,您正在使用StandardAnalyzer来解析输入查询,它会将输入查询“irn_CA”标记为两个标记 - “irn”和“CA”。由于索引将“irn_CA”作为单个标记,因此不匹配。

尝试使用KeywordAnalyzer进行搜索。它将为查询字符串生成单个标记,并正确匹配索引标记。

答案 1 :(得分:0)

我认为搜索者强制所有内容都是小写的...所以在添加到索引时使状态为小写:

Field stateField = new Field("state","irn_" + state.toLowerCase(), Field.Store.NO, Field.Index.UN_TOKENIZED);

当你查询:'state:irn_ca'而不是'state:irn_CA'。

我还注意到你以'irn_'为前缀 - 好的电话,否则荧光笔会标记查询。

相关问题