什么是一个好的Lucene分析器用于混合文本和不同源代码的文档?
例如,我希望将“C”和“C ++”视为不同的单词,并且我希望Charset.forName("utf-8")
在类名和方法名之间分开,并且要将参数视为一个或两个字。
我想要了解的一个很好的示例数据集是StackOverflow本身。我相信StackOverflow使用Lucene.NET进行搜索;它是使用库存分析仪,还是经过大量定制?
答案 0 :(得分:0)
您可能最好使用WhitespaceTokenizer并对其进行自定义以去除标点符号。例如,除了'+',' - '之外我们删除所有的截断,以便保留诸如C ++等等的单词,但是留下开始和结束引号和括号等。实际上,对于类似这样的事情,您可能必须使用不同的标记器两次添加文档以捕获文档的不同部分。即,一次使用StandardTokenizer,一次使用WhitespaceTokenizer,在这种情况下,StandardTokenizer将拆分您的所有代码,例如在类和方法名称之间作为Whitespace,将获取诸如C ++之类的单词。显然,它取决于语言,例如Scala允许在方法名称中使用一些标点字符。