微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果附件是 docx、pptx、xlsx 格式的类型,couchdb-lucene 将永远坚持索引

如何解决如果附件是 docx、pptx、xlsx 格式的类型,couchdb-lucene 将永远坚持索引

我使用的是安装在 Windows Server 2019 上的 couchdb-lucene 2.2.0。 我使用的 Couchdb 版本是 3.1.1

全文搜索适用于文档属性。我还想根据文档附件的内容进行索引。所以我配置了Design Document如下

{
  "_id": "_design/fts","_rev": "2-ec9dfea8eaa44056d74b44135776ef05","fulltext": {
    "by_message": {
      "index": "function(doc) { var ret=new Document(); if (doc._attachments) {for(var a in doc._attachments){ret.attachment('file',a);}} return ret; }"
    }
  }
}

当我将附件上传到类型为 pdf、txt、word 的文档时,一切正常。下面是在ppt文档中搜索“芝麻街”关键字的结果,效果很好。

C:\Users\serhato>curl "http://localhost:5986/localx/denemeserhat/_design/fts/by_message?q=file:sesame%20street"
{"q":"file:sesame default:street","fetch_duration":0,"total_rows":1,"limit":25,"search_duration":1,"etag":"5fe7a890d6f8","skip":0,"rows":[{"score":0.8342865109443665,"id":"2da37b26c45c8a62f7824f7aab015e01"}]}

然后我上传任何 docx 文件(甚至是一个只有一些纯文本的空文件。对于这个特定问题,我的单词 docx 包含“这是一个示例文档,我在 couchdb-lucene 上有索引问题”文本)或 pptx 附件到任何文件并重新运行上述请求。如果永远给出超时错误

C:\Users\serhato>curl "http://localhost:5986/localx/denemeserhat/_design/fts/by_message?q=file:sesame%20street"
{"code":500}

日志只显示下面的消息

2021-02-28 12:16:11,608 WARN [HttpChannel] handleException /localx/denemeserhat/_design/fts/by_message java.io.IOException: Search timed out.

如果我尝试使用 word 文档中的“问题”关键字进行搜索,结果是相同的超时。

C:\Users\serhato>curl "http://localhost:5986/localx/denemeserhat/_design/fts/by_message?q=file:problem"
{"code":500}

如果我尝试使用 stale=ok 它会返回空结果。

C:\Users\serhato>curl "http://locahost:5986/localx/denemeserhat/_design/fts/by_message?q=file:problem&stale=ok"
{"q":"file:problem","total_rows":0,"search_duration":0,"etag":"7d0b10eb5800","rows":[]}

所以索引以某种方式永远卡住了。重新启动 Couchdb-Lucene 不会改变任何东西。如果我从 couchdb 中删除带有 docx 文件的文档,然后如果我重新启动 couchdb-lucene,一切都会重新开始工作。

我认为问题与 zip 格式的文档有关,例如 docx、xlsx 和 pptx 等。

我怀疑问题可能与运行 Lucene 的 Windows 有关,所以我决定在 Ubuntu 20.04 服务器上安装 CouchDB 和 CouchDB-Lucene。但结果是一样的。

一切正常,直到我上传 Docx 或 pptx 文档。但它适用于 doc、rtf、txt 和 pdf 文件

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。