正如你提到的,这是一个骗局这个问题 https://stackoverflow.com/questions/652956/using-multifieldqueryparser。我建议你至少在你的问题中添加一个链接。另外,我强烈建议您创建一个用户帐户,因为现在无法查看您的旧问题来获取上下文。
The StandardAnalyzer
专门处理首字母缩略词,并将 C.F.A. 转换为 C.F.A. (例如)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=<ACRONYM>)
(c.f.a,7,12,type=<HOST>)
(word,13,17,type=<ALPHANUM>)
请注意,例如,如果首字母缩略词不以点结尾,则分析器会假定它是 Internet 主机名,因此搜索“C.F.A”将不会匹配“C.F.A.”在文字中。