Lucene搜索堆栈跟踪:在点上拆分

Lucene搜索堆栈跟踪:在点上拆分,lucene,tokenize,Lucene,Tokenize,我正在编写一个嵌入Lucene的应用程序,用于搜索堆栈跟踪的各个部分,包括类名等。例如,如果文档包含: java.lang.NullPointerException 文档也可以包含普通英文文本 我希望能够查询NullPointerException或java.lang.NullPointerException并找到文档。使用StandardAnalyzer,我只有在搜索完整的java.lang.NullPointerException时才能得到匹配项 支持这一点的最佳方式是什么?我可以发出多个令

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

java.lang.NullPointerException

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

我希望能够查询
NullPointerException
java.lang.NullPointerException
并找到文档。使用
StandardAnalyzer
,我只有在搜索完整的
java.lang.NullPointerException
时才能得到匹配项


支持这一点的最佳方式是什么?我可以发出多个令牌吗?e、 g.
java
lang
NullPointerException
java.lang.NullPointerException
?或者我最好先用空格替换所有的
字符?还是别的什么?

标准分析器所用的算法而言,点字符被视为一个字符。Lucene试图对此保持明智,并尽可能对情况做出最好的猜测

您在这里有几个选项:

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