我再次发布此问题,因为我的查询没有得到解答.
我正在使用Lucene处理图书搜索API.用户可以搜索其标题或说明字段包含CFA的图书.我使用StandardAnalyzer以及停用词列表.
我使用MultiFieldQueryParser解析string.But解析后,删除字符串中的点.我在这里失踪了什么?
谢谢.
正如你所提到的,这是这个问题的一个骗局.我建议你至少在你的问题中添加一个链接.此外,我建议您创建一个用户帐户,因为现在无法查看旧问题以获取上下文.
所述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());
顺便说一句,这个输出是:
(cfa,0,6,type=) (c.f.a,7,12,type=) (word,13,17,type= )
请注意,例如,如果首字母缩略词不以点结尾,则分析器假定它是互联网主机名,因此搜索"CFA"将与文本中的"CFA"不匹配.