【问题标题】:How to have ngram tokenizer in lucene 4.0?如何在 lucene 4.0 中使用 ngram 标记器?
【发布时间】:2013-07-01 14:55:59
【问题描述】:

我正在使用不带空格的文本索引大型文本文件。目前我有 ngram 方法来生成长度为 12 的字符串,然后我索引它们。同样的搜索方式,我从用户那里获取字符串,生成 12 的 ngram,然后在构建查询时使用它。在搜索时,请阅读 lucene 中存在的 ngram 标记器。但是找不到太多任何示例。

如何在 lucene 4.0 中实现 ngram 分词器?

【问题讨论】:

    标签: java lucene


    【解决方案1】:

    使用NGramTokenizer 的最简单方法可能是使用this constructor,它只需要一个阅读器,以及最小和最大克大小。您可以将其合并到分析器中,类似于Analyzer docs 上的示例。比如:

    Analyzer analyzer = new Analyzer() {
     @Override
      protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
        Tokenizer source = new NGramTokenizer(reader, 12, 12);
        TokenStream filter = new LowercaseFilter(source);
        return new TokenStreamComponents(source, filter);
      }
    };
    

    【讨论】:

    • 嗨,在这种方法中,如何让令牌流打印生成的 ngram 令牌??
    • 您可以打印reflectAsString 的输出,它应该提供有关流中当前令牌的良好调试信息。
    猜你喜欢
    • 2015-05-20
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 2023-03-21
    • 2013-06-20
    • 2019-05-05
    • 1970-01-01
    相关资源
    最近更新 更多