我尝试使用 lucene 4.10.3 存储大型描述字段。
如果我使用 StringField 或 TextField {
doc.add(new StringField("description", rs.getString("description"), Store.YES));
doc.add(new TextField("description", rs.getString("description"), Store.YES));
} 我会收到以下错误 { java.lang.IllegalArgumentException:文档在 field="description"中至少包含一个巨大术语(其 UTF8 编码长于最大长度 32766),所有这些都被跳过。 }
但是如果我使用 {
doc.add(new Field("description", rs.getString("description"), Store.YES, Index.ANALYZED));
} 我不会收到任何错误,但 lucene 字段似乎在 lucene 4.10.3 中已被弃用
总之我可以指出一个关于如何使用 lucene 4.10.3 存储大文本的解决方案吗?
最诚挚的问候, 奥勒良
最佳答案
如相关Lucene JIRA report中所述,
when a term is greater then 2^15 bytes it is silently ignored at indexing time – a message is logged in to infoStream if enabled, but no error is thrown
因此,它曾经给人一种错觉,认为该文本已被索引(虽然实际上没有),但现在已被正确的异常所取代。您没有注意到这一点的事实就证明了这一点。
对如此大量的数据建立索引是不现实的,您可能需要重新考虑您的数据模型以适应上述边界。
关于java - 如何使用 lucene 4.10.3 保存最大长度描述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28026724/