【问题标题】:Lucene searching stack traces: splitting on dotsLucene 搜索堆栈跟踪:按点分割
【发布时间】:2014-09-29 16:58:02
【问题描述】:

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

java.lang.NullPointerException

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

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

支持这一点的最佳方式是什么?我可以发出多个令牌吗?例如javalangNullPointerExceptionjava.lang.NullPointerException?或者我会更好地用前面的空格替换所有. 字符吗?还是别的什么?

【问题讨论】:

    标签: lucene tokenize


    【解决方案1】:

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

    你有几个选择:

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

    【讨论】:

      猜你喜欢
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多