0

我有一个现有索引,其中包含一些我正在尝试搜索的文档。
当我搜索“真实文本”字段时,一切正常。
当我尝试搜索一个数字字段时,搜索结果为 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

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

有什么我做错了吗?

编辑:
这似乎发生在被索引且没有规范的字段上(根据卢克的标志)。
有人可以解释一下吗?

4

2 回答 2

2

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

NumericRangeQuery.newIntRange("id", Integer.valueOf(902), Integer.valueOf(902),
true, true)     
于 2012-04-09T07:13:09.450 回答
1

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

于 2012-04-05T07:08:36.880 回答