MultiFieldQueryParser正在从首字母缩略词中删除点

0 lucene lucene.net

我再次发布此问题,因为我的查询没有得到解答.

我正在使用Lucene处理图书搜索API.用户可以搜索其标题或说明字段包含CFA的图书.我使用StandardAnalyzer以及停用词列表.

我使用MultiFieldQueryParser解析string.But解析后,删除字符串中的点.我在这里失踪了什么?

谢谢.

its*_*dok 7

正如你所提到的,这是这个问题的一个骗局.我建议你至少在你的问题中添加一个链接.此外,我建议您创建一个用户帐户,因为现在无法查看旧问题以获取上下文.

所述StandardAnalyzer专门处理首字母缩略词,并且转换CFA(例如),以CFA.这意味着您应该能够进行搜索,只要您确保使用相同的分析器进行索引和查询解析.

我建议你运行一些更基本的测试用例来消除其他因素.尝试使用普通用户QueryParser而不是多用户用户.

这是我写的一些代码StandardAnalyzer:

StringReader testReader = new StringReader("C.F.A. C.F.A word");
StandardAnalyzer analyzer = new StandardAnalyzer();
TokenStream tokenStream = analyzer.tokenStream("title", testReader);
System.out.println(tokenStream.next());
System.out.println(tokenStream.next());
System.out.println(tokenStream.next());
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这个输出是:

(cfa,0,6,type=<ACRONYM>)
(c.f.a,7,12,type=<HOST>)
(word,13,17,type=<ALPHANUM>)
Run Code Online (Sandbox Code Playgroud)

请注意,例如,如果首字母缩略词不以点结尾,则分析器假定它是互联网主机名,因此搜索"CFA"将与文本中的"CFA"不匹配.