3

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

2 回答 2

1

你需要看看带状疱疹。那篇文章展示了如何做到这一点。

于 2012-07-26T06:43:27.947 回答
0

看看org.apache.lucene.analysis.ngram.NGramTokenFilter

是来源。

于 2012-07-25T17:35:25.657 回答