我正在开发一个门户,它承载了多种类型的文档(HTML、PDF、PPTx、DocX),并使它们都可以在一个地方搜索。
我们可以使用开箱即用的“标准”ElasticSearch和Ingest附件插件来实现这一点,但我不是数据科学家,对编写弹性查询知之甚少,所以我们的搜索结果并不好。
有人建议我使用Enterprise,而不是尝试调优我的基本查询,但我似乎不能使用它的附件插件。因此,我不能简单地将base64编码的内容发送到documents并期望将内容编入索引。
有办法绕过这件事吗?还是我不能用来搜索这个呢?
发布于 2021-07-11 07:40:11
解决这一问题的方法是像建议的在这篇博客文章中那样利用附件管道来提取附件内容,或者,如果您像我一样在Java中使用后端,您可以使用阿帕奇蒂卡从附件中提取内容。
我实现了Tika来提取HTML内容(实际上是非常直接的)
static String getContent(String htmlContent) throws TikaException, SAXException, IOException {
InputStream input = new ByteArrayInputStream(htmlContent.getBytes());
ContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
new HtmlParser().parse(input, handler, metadata, new ParseContext());
return handler.toString();
}对于PDF文件,我已经使用Apache PdfBox提取了一些其他属性,因此文本是“免费”的。Office文件也是如此,但这需要Apache。
https://serverfault.com/questions/1068989
复制相似问题