2009-12-12 61 views
1

我正在构建一个基于Java Lucene的搜索系统,此外还添加了一定数量的元字段,其中一个元字段是sourceId字段,它表示条目来自哪里。Lucene按数值搜索

我现在试图从特定源检索所有文档,但索引似乎无法找到它们。但是,如果我搜索通配符值,则返回的文档都具有该字段的正确值。

我使用Lucene的查询是相当简单,基本上index-source-id:1但未能返回任何命中,如果我搜索content:a*我得到几十份文件,所有这一切,当记者问,返回值1index-source-id价值,这是正确的。

任何想法?

回答

1

我只使用PHP端口,但是,你有没有检查过你正在使用的文本分析器?这FAQ似乎表明,就像PHP版本一样,您需要使用不会删除数字的不同数字。
您可以找到analyzers here

的列表可以肯定的是,您已将该ID设置为可索引的?

+0

我已经设置ID为可索引的,是。 我一直在寻找一个分析仪的列表,但找不到一个说它特别处理数字的人,看起来StandardAnalyzer的确如此,我认为这已被弃用,所以也许这可能会有所帮助。 – Martin

+1

重建索引,然后使用StandardAnalyzer而不是SimpleAnalyzer进行搜索,这样做的窍门! – Martin

+1

为了将来的参考,你不想分析(也不标记化)ID字段,因为它们应该是天生的原子,并且爱因斯坦在曼哈顿计划中告诉我们他的朋友们,分裂原子并不是一件好事。 .. – Esko