【问题标题】:Lucene - How to use TeeSinkTokenFilter?Lucene - 如何使用 TeeSinkTokenFilter?
【发布时间】:2013-09-03 16:22:32
【问题描述】:

谁能解释一下如何(以及为什么)使用来自 Lucene 的 TeeSinkTokenFilter?一个例子也将不胜感激=P。我没有发现official documentation 很清楚,也查了很多网站,没有太大进展。 谢谢。

【问题讨论】:

    标签: java lucene


    【解决方案1】:

    是的,我认为官方文档也不是很清楚。我认为它如此令人困惑的部分原因在于它以一种难以区分的方式同时展示了两个不同的功能。让我看看我是否可以重写他们的示例以仅显示基本案例。

    TeeSinkTokenFilter source1 = new TeeSinkTokenFilter(
        new WhitespaceTokenizer(version, reader1));
    TeeSinkTokenFilter.SinkTokenStream sink1 = source1.newSinkTokenStream();
    TeeSinkTokenFilter.SinkTokenStream sink2 = source1.newSinkTokenStream();
    source1.consumeAllTokens(); // all tokens get cached at this point
    
    TokenStream final3 = new EntityDetect(sink1);
    TokenStream final4 = new URLDetect(sink2);
    
    d.add(new TextField("f3", final3, Field.Store.NO));
    d.add(new TextField("f4", final4, Field.Store.NO));
    

    这允许 final3 和 final4 令牌流共享由 source1 完成的处理。正如官方文档所说,消费流的顺序很重要,但正如它没有说的那样,顺序似乎是不确定的(或者可能按字段名称的字母顺序排列)。我建议像上面一样使用 consumeAllTokens 方法。

    【讨论】:

      猜你喜欢
      • 2012-02-09
      • 2012-02-11
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多