查询lucene中的字符串编号没有找到任何结果

时间:2012-04-05 06:38:06

标签: lucene

我有一个现有的索引,其中包含我正在尝试搜索的一些文档 当我搜索“真正的文本”字段时,一切都很好 当我尝试搜索一个数字字段时,搜索结果为0 代码是这样的(它是pylucene,但概念是相同的):

dir = SimpleFSDirectory(File(indexDir))
analyzer = StandardAnalyzer(Version.LUCENE_CURRENT)
searcher = IndexSearcher(dir)
query = QueryParser(Version.LUCENE_CURRENT, "id", analyzer).parse("902")
hits = searcher.search(query, MAX)
print hits.totalHits #gives me 0

一个luke搜索(id:902)也给了我空的结果 当我查看luke上的Overview选项卡时,它表示该字段是UTF-8(字符串)

我做错了什么?

修改
看起来这发生在索引的字段上并且没有Norm(根据luke的标志) 有人可以解释一下吗?

2 个答案:

答案 0 :(得分:2)

我不喜欢回答我自己的问题,但我相信这个答案是一个重要的参考 该解决方案是一个NumericRange查询,其中两个数字都是您寻找的数字(这次是在java中):

NumericRangeQuery.newIntRange("id", Integer.valueOf(902), Integer.valueOf(902),
true, true)     

答案 1 :(得分:1)

您在编制索引时使用SimpleAnalyzer吗?它剥去了数字。索引和搜索时确保使用相同的分析器。