我是Lucene的新手,我真的很感激如何在索引中使用bigrams和trigrams令牌。
我正在使用以下代码,我修改了它以便能够计算术语频率和重量,但我也需要对bigrams和trigrams这样做。我看不到标记化部分!我在线搜索并且Lucene 3.4.0中不存在一些建议的类,因为它们已被弃用。
有什么建议吗?
谢谢, 萌
编辑:--------------------------------
现在我正在使用NGramTokenFilter,因为mbonaci建议。 这是代码的一部分,我将文本标记为获取uni,bi和trigrams。但它是在一个角色而不是单词级别上完成的。
而不是:
[H][e][l][l][o][HE][EL]
等。
我正在寻找:[Hello][World][Hello World]
int min =1;
int max =3;
WhitespaceAnalyzer analyzer = new WhitespaceAnalyzer(Version.LUCENE_34);
String text ="hello my world";
TokenStream tokenStream = analyzer.tokenStream("Data", new StringReader(text));
NGramTokenFilter myfilter = new NGramTokenFilter(tokenStream,min,max);
OffsetAttribute offsetAttribute2 = myfilter.addAttribute(OffsetAttribute.class);
CharTermAttribute charTermAttribute2 = myfilter.addAttribute(CharTermAttribute.class)
while (myfilter.incrementToken()) {
int startOffset = offsetAttribute2.startOffset();
int endOffset = offsetAttribute2.endOffset();
String term = charTermAttribute2.toString();
System.out.println(term);
};