我有一个需要来自令牌流的字段;它不能用字符串实例化,然后分析成令牌。例如,我可能希望将来自多个列(在我的RDBMS中)的数据合并到一个Lucene字段中,但我想以自己的方式分析每个列。因此,我不能简单地将它们全部作为单个字符串连接,然后分析结果字符串。
我现在遇到的问题是无法存储从令牌流创建的字段,这在一般情况下是有意义的,因为流可能没有明显的字符串表示。但是,我知道字符串表示,我想存储它。
我尝试添加相同的字段两次,一次存储并且有字符串数据,一次来自令牌流,但似乎无法完成。除了添加一个名为“myfield__stored”的字段之外,有没有办法做到这一点?
我使用的是2.9.2。
答案 0 :(得分:3)
SetTokenStream
来隐藏它:
Field f = new Field(Name, StringValue, Store, Analyzed, TV);
f.SetTokenStream(TokenStreamValue);
因为如果令牌流值为null,则仅对读取器/字符串值建立索引,将对令牌流值编制索引。无论令牌流如何,存储方法都会查看字符串/阅读器,因此它将存储此值。