在 Apache CouchDB 中启用全文搜索

Enable Full Text Search in Apache CouchDB

我已按照此处的博客条目启用全文搜索https://developer.ibm.com/dwblog/2015/text-search-apache-couchdb/#.Vly24SCrQbV

我已经正确设置了所有内容,并且还尝试了其他人的 docker 图片。

如何设置搜索?需要什么文件。

我用一个文档创建了一个名为 cats 的数据库

{
  "_id": "6f35d75b476517e2fc0b3eb12c000e72",
  "_rev": "1-c9a6b4734c83287499e8bbd6d1339050",
  "name": "tibbles"
}

还有一个design/view

{
  "_id": "_design/cat_look",
  "_rev": "1-aae457e6edf5e4a3f69357e5a2160fcc",
  "views": {
    "kitty_name": {
     "map": "function (doc) {\n  index(\"kittyName\", doc.name, {\"store\": true});\n}"
     }
   },
  "language": "javascript"
}

如果我去 http://localhost:15984/cats/_design/cat_look/_search/kitty_name?q="*"

我明白了

{"error":"not_found","reason":"kitty_name not found."}

感谢您对此的任何帮助,我很迷茫。

Lucene 搜索索引的设置方式与 Map Reduce 视图的设置方式不同。在您的代码中,您似乎已尝试使用 Map Reduce 视图。对于Lucene,首先需要设置索引:

{
    "_id": "_design/Cat_look",
    "indexes": {
        "kitty_name": {
            "index": "function(doc){ ... }"
        }
    }
}

查阅 Cloudant 关于该主题的文档:https://console.bluemix.net/docs/services/Cloudant/api/search.html#search

谢谢你的帮助,你是对的我设置了错误的Lucene搜索索引。这是为其他任何人丢失的简单示例的代码。

如果您有docker设置

docker run -d -p 15984:15984 ncheaz/couchdb:search

在本地端口 15984 上进行 couchdb 搜索

要搜索的文档

{
  "_id": "6f35d75b476517e2fc0b3eb12c000e72",
  "_rev": "1-c9a6b4734c83287499e8bbd6d1339050",
  "name": "tibbles"
}

搜索索引。 创建新文档,而不是新视图。

{
  "_id": "_design/cat_look",
  "_rev": "2-23f6ab0606a603cbef04653d167585d4",
  "views": {},
  "language": "javascript",
  "indexes": {
    "kitty_name": {
      "analyzer": "simple",
      "index": "function (doc) {if (doc.name) {index(\"name\", doc.name, {\"store\":true});  }}"
    }
  }
}

搜索猫名字的url是

http://localhost:15984/cats/_design/cat_look/_search/kitty_name?q=name:tibbl*

请注意,kitty_name 是 _search 的名称,name 是索引名称。

我建议任何努力让它工作的人在 IBM Cloudant 上创建一个免费试用帐户,因为文档直接与其产品相关,而且更容易理解。