如何在Lucene 3.4.0中创建一个二元组/三元组索引?

时间:2012-07-25 16:50:38

标签: java lucene tokenize

我是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);
        };

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)