Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关键字分析器和小写过滤器/小写键生成器_Java_Lucene_Customization_Analyzer - Fatal编程技术网

Java 关键字分析器和小写过滤器/小写键生成器

Java 关键字分析器和小写过滤器/小写键生成器,java,lucene,customization,analyzer,Java,Lucene,Customization,Analyzer,我想构建自己的分析器,它同时使用过滤器/标记器 我的意思是,相同的字段是关键字(作为单个标记的整个流)和小写 如果仅使用,则字段的值保持大小写不敏感。 如果我使用或必须将它们与执行相同操作的其他分析器组合(不以字母分隔、以空格分隔、删除停止词等) 问题是:有没有办法使用过滤器或分析器Lucene或tokenizer将该字段设置为关键字(整个流作为单个标记),并将其小写 (谷歌翻译,抱歉出错)这应该可以: public final class YourAnalyzer extends Reusab

我想构建自己的分析器,它同时使用过滤器/标记器

我的意思是,相同的字段是关键字(作为单个标记的整个流)和小写

如果仅使用,则字段的值保持大小写不敏感。 如果我使用或必须将它们与执行相同操作的其他分析器组合(不以字母分隔、以空格分隔、删除停止词等)

问题是:有没有办法使用过滤器或分析器Lucene或tokenizer将该字段设置为关键字(整个流作为单个标记),并将其小写

(谷歌翻译,抱歉出错)

这应该可以:

public final class YourAnalyzer extends ReusableAnalyzerBase { 

  @Override
  protected TokenStreamComponents createComponents(final String fieldName, final Reader reader) {
    final TokenStream source = new KeywordTokenizer(reader);
    return new TokenStreamComponents(source, new LowercaseFilter(Version.LUCENE_36, source));
  }
}

在Lucene 3.6.2中,它必须如下所示:

import org.apache.lucene.analysis.KeywordAnalyzer;
import org.apache.lucene.analysis.KeywordTokenizer;
import org.apache.lucene.analysis.LowerCaseFilter;
import org.apache.lucene.analysis.LowerCaseTokenizer;
import org.apache.lucene.analysis.ReusableAnalyzerBase;
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.util.Version;

public class YourAnalyzer extends ReusableAnalyzerBase {

    private final Version version;

    public YourAnalyzer(final Version version) {
        super();
        this.version = version;
    }

    @Override
    protected TokenStreamComponents createComponents(final String fieldName, final Reader reader) {
        final Tokenizer source = new KeywordTokenizer(reader);
        return new TokenStreamComponents(source, new LowerCaseFilter(this.version, source));
    }

}