我正在编写一个嵌入Lucene的应用程序来搜索堆栈跟踪的部分内容,包括类名等。例如,如果包含文档:
java.lang.NullPointerException
文件也可以包含普通的英文文本。
我希望能够查询NullPointerException
或java.lang.NullPointerException
并找到该文档。使用StandardAnalyzer
,如果我搜索完整的java.lang.NullPointerException
,我只能获得匹配。
支持此项的最佳方法是什么?我可以发出多个令牌吗?例如java
,lang
,NullPointerException
和java.lang.NullPointerException
?或者我会更好地用前面的空格替换所有.
个字符?或其他什么?
答案 0 :(得分:1)
对于StandardAnalyzer
使用的算法,点字符被视为"ambiguous terminator"。 Lucene试图对此有所了解,并对情况作出最佳猜测。
你有几个选择:
SimpleAnalyzer
,它只会创建不间断字母串的标记。StandardAnalyzer
的分析器中。这将允许您测试您喜欢的任何识别技术,以识别令牌是一个例外,并在分析阶段将它们拆分。