我有一个现有的索引,其中包含我正在尝试搜索的一些文档 当我搜索“真正的文本”字段时,一切都很好 当我尝试搜索一个数字字段时,搜索结果为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的标志)
有人可以解释一下吗?
答案 0 :(得分:2)
我不喜欢回答我自己的问题,但我相信这个答案是一个重要的参考 该解决方案是一个NumericRange查询,其中两个数字都是您寻找的数字(这次是在java中):
NumericRangeQuery.newIntRange("id", Integer.valueOf(902), Integer.valueOf(902),
true, true)
答案 1 :(得分:1)
您在编制索引时使用SimpleAnalyzer吗?它剥去了数字。索引和搜索时确保使用相同的分析器。