关于Lucene的问题

时间:2015-05-01 14:14:27

标签: java lucene

我正在研究Lucene,对于一些给我不同结果的查询有一些疑问。

三个查询是:

Q1 =“验证Java 8兼容”

Q2 =“Java 8未经验证为兼容”

Q3 =“Java 8未经验证为兼容”

我试图理解为什么Q1和Q2的结果如此相似,但与Q3不同。

任何人都可以告诉我这是什么类型的信息检索问题吗?我知道它与自然语言和IR索引和查询语言有关。

谢谢。

1 个答案:

答案 0 :(得分:2)

我猜你正在使用StandardAnalyzer使用默认(英语)停止集或EnglishAnalyzer

无论哪种方式,停止词都是这里要关注的事情。 ""," not"," to"," be"," as","一个"都是停用词,因此从索引中有效地消除了。

虽然它们不再可搜索,但已消除的停止词会留下位置增量,因此后分析表示将真正像

  • Q1 =" Java 8 _已验证_ _兼容"

  • Q2 =" Java 8 _已验证_ _兼容"

  • Q3 =" Java 8 _已验证_兼容"

其中_表示一些已消除的,不可搜索的限位词。因此,基于该表示,在分析之后,Q1和Q2实际上是相同的查询。但是,Q3的位置增量减少了一个,这意味着它需要少一个字(或代币)出现在"已验证的#34;之间。和"兼容"。

相关问题