java - 如何使用 lucene 4.10.3 保存最大长度描述?

标签 java lucene

我尝试使用 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/

相关文章:

java - Java 中的 Files.move() 给出 FilesSystemException 错误,因为文件夹是 "being used by another process,"但它不是

java - 如何在 Concurrenthashmap 中做弱引用

java - 使用 JDBC 驱动程序在 SQL Server 中设置默认行预取

java - 返回 200 响应代码而不是 204

lucene - 如何使用 Term 或 QueryParser 从 Lucene 索引中删除文档

java - 取消@Asynchronous EJB 调用

Lucene .Net 优化流程

lucene - 在C#NEST中选择Lucene/Elastic Search荧光笔

java - Solr 5.x,如何生成.war文件

java - 自定义 lucene 评分 - 字段提升和查询提升之间的点积