我正在开发一个门户网站,它托管多种类型的文档(HTML、PDF、PPTx、DocX),并使其都可以在一个地方进行搜索。
我们可以使用“标准”开箱即用的 ElasticSearch 和 Ingest Attachment 插件来实现这一点,但我不是数据科学家,对编写 Elastic 查询知之甚少,所以我们的搜索结果不是很好。
有人建议我使用企业应用搜索,而不是尝试调整基本查询,但似乎无法使用提取附件插件?因此,我无法简单地将 base64 编码的内容发送到文档 API 并期望内容被编入索引。
有什么办法可以解决这个问题吗?或者说我不能使用 App Search 来解决这个问题?
答案1
答案是,按照建议利用附件管道提取附件内容在这篇博文中或者,如果你的后端像我一样使用 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 Poi。