Java 如何在Lucene 3.4.0中创建二元/三元索引?

Java 如何在Lucene 3.4.0中创建二元/三元索引?,java,lucene,tokenize,Java,Lucene,Tokenize,我是Lucene的新手,如果能给我一个关于如何在索引中使用bigrams和trigrams标记的例子,我将不胜感激 我正在使用下面的代码,并且我已经修改了它,以便能够计算术语频率和权重,但是我也需要对bigram和trigram这样做。我看不到标记化部分!我在网上搜索过,一些建议的类在Lucene 3.4.0中不存在,因为它们已经被弃用了 有什么建议吗 谢谢, 教育部 编辑:-------------------------------- 现在我正在使用NGramTokenFilter,正如mb

我是Lucene的新手,如果能给我一个关于如何在索引中使用bigrams和trigrams标记的例子,我将不胜感激

我正在使用下面的代码,并且我已经修改了它,以便能够计算术语频率和权重,但是我也需要对bigram和trigram这样做。我看不到标记化部分!我在网上搜索过,一些建议的类在Lucene 3.4.0中不存在,因为它们已经被弃用了

有什么建议吗

谢谢, 教育部

编辑:--------------------------------

现在我正在使用NGramTokenFilter,正如mbonaci所建议的那样。 这是代码的一部分,我在代码中标记文本以获取uni、bi和Trigram。但这是在角色层面而不是文字层面上完成的

而不是:
[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);
        };
看一看


是源代码。

您需要查看。那篇文章展示了如何做到这一点。

非常感谢。但是如何在文字层面而不是文字层面上表达。对于文本
“你好,我的世界”,我得到了:[H][e][l][o][He][el][ll][lo]
等等。。。而不是
[Hello][My][World][Hello My][My World][Hello My World]
等。。。我使用了WhitespaceAnalyzer。谢谢,这一个成功了。这个链接断了