java lucene:使StandardTokenizer适应Twitter数据
我需要调整lucene的StandardTokenizer,使其适应twitter数据的一些特殊用途。目前,我使用StandardTokenizer对一些推文进行标记,这是我想做的。它工作得很好,但现在我想扩展行为(例如,康塞德尔也有标签和“某人,考虑Shimes:”),删除URL,…)。p>
有人能告诉我——甚至给我一个方向——我怎么能轻松做到这一点?我知道,编写自己的标记器是最好的选择,但我对lucene很陌生,不知道如何开始
我希望有人能帮我:)
最好的, 迈克尔
# 1 楼答案
通过使用lucene的CharFilter API(也可能是TokenFilters,具体取决于您希望搜索的工作方式),可以极大地扩展StandardTokenizer的标记化
最终,如果StandardTokenizer与您想要的完全不同,那么它就是错误的标记器,但是如果它接近,这可能会容易得多
CharFilter本质上是一个FilterReader,允许您在标记器运行之前修改文本。它还跟踪偏移调整,以便高亮显示仍能工作
要添加CharFilters,最简单的方法是扩展ReusableAnalyzerBase并重写其initReader方法,用所需的CharFilters包装传入的读取器
您可能想先看看MappingCharFilter,它允许您预先定义一些映射来处理特殊的twitter语法。这里有一些例子/想法: http://markmail.org/message/abo2hysvfy2clxed