Lucene搜索堆栈跟踪:分裂点

时间:2014-09-29 16:58:03

标签: lucene tokenize

我正在编写一个嵌入Lucene的应用程序来搜索堆栈跟踪的部分内容,包括类名等。例如,如果包含文档:

java.lang.NullPointerException

文件也可以包含普通的英文文本。

我希望能够查询NullPointerExceptionjava.lang.NullPointerException并找到该文档。使用StandardAnalyzer,如果我搜索完整的java.lang.NullPointerException,我只能获得匹配。

支持此项的最佳方法是什么?我可以发出多个令牌吗?例如javalangNullPointerExceptionjava.lang.NullPointerException?或者我会更好地用前面的空格替换所有.个字符?或其他什么?

1 个答案:

答案 0 :(得分:1)

对于StandardAnalyzer使用的算法,点字符被视为"ambiguous terminator"。 Lucene试图对此有所了解,并对情况作出最佳猜测。

你有几个选择:

  • 如果您不希望Lucene应用一系列复杂的词法标记化规则,您可以尝试使用更简单的分析器,例如SimpleAnalyzer,它只会创建不间断字母串的标记。
  • 实施应用您自己的专门规则的过滤器,并将其合并到类似于StandardAnalyzer的分析器中。这将允许您测试您喜欢的任何识别技术,以识别令牌是一个例外,并在分析阶段将它们拆分。
  • 正如你所说,你可以在它们到达分析仪之前用空格替换句号。