java - Apache Tika 和解析文档时的字符限制

标签 java text-processing apache-tika

有人可以帮我解决一下吗?

可以这样做

   Tika tika = new Tika();
   tika.setMaxStringLength(10*1024*1024);

但是如果你不直接使用Tika,像这样:

ContentHandler textHandler = new BodyContentHandler();
Metadata metadata = new Metadata();
Parser parser = new AutoDetectParser();

ParseContext ps = new ParseContext();
for (InputStream is : getInputStreams()) {
    parser.parse(is, textHandler, metadata, ps);
    is.close();
    System.out.println("Title: " + metadata.get("title"));
    System.out.println("Author: " + metadata.get("Author"));
}

无法设置它,因为您不与 WriteOutContentHandler 交互。顺便说一句,它默认设置为 -1,这意味着没有限制。但由此产生的限制是 100000 个字符。

/**
 * The maximum number of characters to write to the character stream.
 * Set to -1 for no limit.
 */
private final int writeLimit;

/**
 * Number of characters written so far.
 */
private int writeCount = 0;

private WriteOutContentHandler(Writer writer, int writeLimit) {
    this.writer = writer;
    this.writeLimit = writeLimit;
}

/**
 * Creates a content handler that writes character events to
 * the given writer.
 *
 * @param writer writer
 */
public WriteOutContentHandler(Writer writer) {
    this(writer, -1);
}

最佳答案

您一定忽略了内容处理程序具有带写入限制的构造函数。

ContentHandler textHandler = new BodyContentHandler(int writeLimit);

关于java - Apache Tika 和解析文档时的字符限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6144708/

相关文章:

java - 双缓冲看起来不稳定

java - 创建自定义阻塞 Java Swing 提示

python - 从 Pandas 行中删除多个重复出现的文本`

python - 将号码替换为其他号码

java - Tika不输出文档内容

java - 无法使用 JAXB org.springframework.oxm.UnmarshallingFailureException 解析 XML 消息

java - 防止后退按钮在java servlet中重新提交表单数据

bash - 如何删除一个文件中存在于另一个文件中的行?

scala - 在 Spark 上运行 Tika 的类路径问题

solr - 如何使用 Solr 的 FileListEntityProcessor 在搜索结果中显示文件名