繁体   English   中英

Lucene-如何使用TeeSinkTokenFilter?

[英]Lucene - How to use TeeSinkTokenFilter?

谁能解释从Lucene使用TeeSinkTokenFilter的方式(以及用途)? 一个例子也将不胜感激= P。 我发现官方文档不太清楚,并且还查找了许多站点,但进展不大。 谢谢。

是的,我也不认为官方文档非常清楚。 我认为让它如此混乱的部分原因在于,它以难以区分的方式展示了两个不同的功能。 让我看看是否可以重写他们的示例以仅显示基本情况。

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方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM