我们在产品中使用Lucene.Net(2.3.2.1)和NHibernate.Search,我发现了一个关于我的查询的非常奇怪的行为。 下面是我的两个测试的Debug输出,显示输入查询,在第二行,使用StandardAnalyser生成查询解析器生成的内容:
测试1(失败)
LastName:* AND IdentityType:A
LastName:*
VS。测试2(工作)
LastName:* AND IdentityType:F
+LastName:* +IdentityType:f
正如你所看到的唯一区别是“A”与“F” - 我玩过arround并且可以使用“AN”“AS”“AND”重现相同的问题 - 套管无关紧要,但所有其他条款都有效,我有AND关键字,所以我厌倦了“O”“或”,但这两个正在工作。
对于我来说,这看起来像是Query Parser的一个问题......但现在我也深入研究了我生成的索引,并且所有使用IndentityType字段中的“A”的实体都没有编入索引!
我会感谢任何有关该问题的帮助或提示。
亲切的问候, 克里斯答案 0 :(得分:2)
StandardAnalyzer有一个分析文本时使用的停用词列表。 “A”正在被删除。
尝试使用per field analyzer wrapper和a different analyzer作为IndentityType字段。
在一个更加行政的说明中,如果这个问题被标记为“Lucene”而不仅仅是“Lucene.net”,那么你可能会得到更快的答案......
祝你好运,