我正在研究Lucene,并对一些问题提出了一些问题,这些问题给了我不同的结果。
这三个查询是:
Q1 =“Java8经验证是兼容的”
Q2 =“Java8未验证为兼容”
Q3 =“Java8未验证为兼容”
我试图理解为什么Q1和Q2的结果如此相似,但与Q3不同。
还有人能告诉我这是什么类型的信息检索问题吗?我知道这与自然语言、IR索引和查询语言有关。
谢谢。
发布于 2015-05-01 17:01:38
我猜您使用的是StandardAnalyzer和默认的(英语)停止集或EnglishAnalyzer。
不管是哪种方式,停止言语都是这里应该关注的问题。"is“、"not”、"to“、"be”、"as“和"a”都是停止词,因此有效地从索引中删除。
虽然它们不再是可搜索的,但已删除的停止词确实会留下一个位置增量,所以分析后的表示方式实际上类似于
其中an _表示一些已消除的、不可搜索的词组。因此,基于这种表示,经过分析,Q1和Q2实际上是相同的查询。然而,Q3的位置增量却少了一个,这意味着它期望在“验证”和“兼容”之间少出现一个单词(或标记)。
https://stackoverflow.com/questions/29988520
复制相似问题