1

对于混合了文本和不同源代码的文档,什么是好的 Lucene 分析器?

例如,我希望将“C”和“C++”视为不同的词,并且希望Charset.forName("utf-8")将类名和方法名分开,并将参数视为一个或两个词。

我想看的一个很好的示例数据集是 StackOverflow 本身。我相信 StackOverflow 使用 Lucene.NET 进行搜索;它使用库存分析器,还是经过大量定制?

4

1 回答 1

0

您可能最好使用 WhitespaceTokenizer 并对其进行自定义以去除标点符号。例如,我们去掉除“+”、“-”之外的所有标点符号,以便留下诸如 C++ 等单词,但留下开头和结尾的引号和括号等。实际上,尽管对于这样的事情,您可能必须使用不同的标记器两次添加文档以捕获文档的不同部分。即,一次使用StandardTokenizer,一次使用WhitespaceTokenizer,在这种情况下,StandardTokenizer 将拆分您的所有代码,例如在类名和方法名之间,因为Whitespace 将提取诸如C++ 之类的词。显然,它有点依赖于语言,例如 Scala 允许在方法名称中使用一些标点符号。

于 2012-08-08T13:23:20.597 回答