Java Lucene Ngrams

Java Lucene Ngrams,java,api,lucene,n-gram,Java,Api,Lucene,N Gram,我想使用Lucene API从句子中提取ngrams。然而,我似乎遇到了一个特殊的问题。在中,有一个名为NGramTokenizer的类。我已经下载了3.6.1和4.0API,我没有看到这个类的任何痕迹。例如,当我尝试以下操作时,会出现一个错误,指出找不到符号NGramTokenizer: NGramTokenizer myTokenizer; 在文档中,NGramTokenizer似乎位于路径org.apache.lucene.analysis.NGramTokenizer中。我在我的电脑上

我想使用Lucene API从句子中提取ngrams。然而,我似乎遇到了一个特殊的问题。在中,有一个名为NGramTokenizer的类。我已经下载了3.6.1和4.0API,我没有看到这个类的任何痕迹。例如,当我尝试以下操作时,会出现一个错误,指出找不到符号NGramTokenizer:

NGramTokenizer myTokenizer;
在文档中,NGramTokenizer似乎位于路径org.apache.lucene.analysis.NGramTokenizer中。我在我的电脑上看不到这个。由于3.6.1和4.0 API都出现这种情况,因此似乎不太可能发生下载或其他杂项错误

  • 如何获得NGramTokenizer类
  • 我将lucene-core-3.6.1.jar添加到我的项目中

  • 你用错罐子了。它在里面

    lucene-analyzers-3.6.1.jar
    
    org.apache.lucene.analysis.ngram.NGramTokenizer
    

    你用错罐子了。它在里面

    lucene-analyzers-3.6.1.jar
    
    org.apache.lucene.analysis.ngram.NGramTokenizer
    

    这里是一个实用的方法,我通常使用的情况下,有人需要帮助这一点。应该与lucene 4.10一起使用(我没有使用更低或更高版本进行测试)

    private Set generateNgrams(字符串语句,int-ngramCount){
    StringReader=新的StringReader(句子);
    Set ngrams=new HashSet();
    //使用lucene的木瓦过滤器生成令牌
    StandardTokenizer源=新的StandardTokenizer(读卡器);
    TokenStream TokenStream=新的标准过滤器(源);
    TokenFilter sf=null;
    //如果只需要Unigram,则使用标准过滤器,否则使用木瓦过滤器
    如果(ngramCount==1){
    sf=新的标准过滤器(令牌流);
    }
    否则{
    sf=新木瓦过滤器(令牌流);
    ((ShingleFilter)sf).setMaxShingleSize(ngramCount);
    }
    CharTermAttribute CharTermAttribute=sf.addAttribute(CharTermAttribute.class);
    试一试{
    sf.reset();
    while(sf.incrementToken()){
    字符串标记=CharterMatAttribute.toString().toLowerCase();
    ngrams.add(令牌);
    }
    sf.end();
    sf.close();
    }捕获(IOEX异常){
    //System.err.println(“根据需要尖叫和哭泣”);
    例如printStackTrace();
    }
    返回ngrams;
    }
    
    lucene所需的Maven依赖项包括:

        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
            <version>4.10.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-analyzers-common</artifactId>
            <version>4.10.3</version>
        </dependency>
    
    
    org.apache.lucene
    lucene岩芯
    4.10.3
    org.apache.lucene
    lucene分析仪通用
    4.10.3
    
    这里有一个实用方法,我通常在有人需要帮助时使用。应该与lucene 4.10一起使用(我没有使用更低或更高版本进行测试)

    private Set generateNgrams(字符串语句,int-ngramCount){
    StringReader=新的StringReader(句子);
    Set ngrams=new HashSet();
    //使用lucene的木瓦过滤器生成令牌
    StandardTokenizer源=新的StandardTokenizer(读卡器);
    TokenStream TokenStream=新的标准过滤器(源);
    TokenFilter sf=null;
    //如果只需要Unigram,则使用标准过滤器,否则使用木瓦过滤器
    如果(ngramCount==1){
    sf=新的标准过滤器(令牌流);
    }
    否则{
    sf=新木瓦过滤器(令牌流);
    ((ShingleFilter)sf).setMaxShingleSize(ngramCount);
    }
    CharTermAttribute CharTermAttribute=sf.addAttribute(CharTermAttribute.class);
    试一试{
    sf.reset();
    while(sf.incrementToken()){
    字符串标记=CharterMatAttribute.toString().toLowerCase();
    ngrams.add(令牌);
    }
    sf.end();
    sf.close();
    }捕获(IOEX异常){
    //System.err.println(“根据需要尖叫和哭泣”);
    例如printStackTrace();
    }
    返回ngrams;
    }
    
    lucene所需的Maven依赖项包括:

        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
            <version>4.10.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-analyzers-common</artifactId>
            <version>4.10.3</version>
        </dependency>
    
    
    org.apache.lucene
    lucene岩芯
    4.10.3
    org.apache.lucene
    lucene分析仪通用
    4.10.3
    
    什么是StandardFilter?什么是StandardFilter?