我是 Lucene 的新手,我非常感谢一个关于如何在索引中包含二元组和三元组标记的示例。
我正在使用以下代码,并对其进行了修改,以便能够计算术语频率和权重,但我也需要对二元组和三元组进行此操作。我看不到标记化部分!我在网上搜索,一些建议的类在 Lucene 3.4.0 中不存在,因为它们已被弃用。
请问有什么建议吗?
谢谢,萌
编辑: - - - - - - - - - - - - - - - -
现在我按照 mbonaci 的建议使用 NGramTokenFilter。这是我标记文本以获取 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);
};