lucene:将StandardTokenizer改编为Twitter数据

时间:2011-12-11 14:59:28

标签: java twitter lucene tokenize

我需要将lucene的StandardTokenizer改编成一些关于twitter数据的特殊用途。目前我使用StandardTokenizer来标记一些我想要工作的推文。它工作得很好,但现在我想扩展行为(例如考虑#hashtags和@somebody,考虑表情符号:),删除网址,...)。

有人可以告诉我 - 或者甚至给我一个方向 - 我怎么能这么容易地做到这一点?我知道,编写自己的Tokenizer将是最好的选择,但我对lucene很新,我不知道如何开始......

我希望有人可以帮助我:)。

最佳, 迈克尔

1 个答案:

答案 0 :(得分:2)

您可以使用lucene的CharFilter apis(以及可能的TokenFilters)扩展StandardTokenizer的标记化,具体取决于您希望搜索的工作方式。

最终,如果StandardTokenizer与你想要的完全不同,那么它就是错误的标记器,但如果它关闭,这可以更容易。

CharFilter本质上是一个FilterReader,它允许您在Tokenizer运行之前修改文本。它还跟踪偏移调整,以便突出显示仍然有效!

添加CharFilters,最简单的方法是扩展ReusableAnalyzerBase并覆盖其initReader方法,使用所需的CharFilters包装传入的阅读器。

您可能希望将MappingCharFilter视为一个开始,它允许您预先定义一些映射以处理您的特殊Twitter语法。这里有一些例子/想法: http://markmail.org/message/abo2hysvfy2clxed