在Apache CouchDB中启用全文搜索

时间:2017-07-09 21:59:53

标签: lucene full-text-search couchdb cloudant

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

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

如何设置搜索?需要哪些文件。

我创建了一个名为cats的数据库,其中包含一个文档

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

设计/视图

{
  "_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。”}

感谢您提供任何帮助,我很失落。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

感谢您的帮助,您说得对,我错误地设置了Lucene搜索索引。下面是一个代码,可以让一个简单的例子适合其他人丢失。

如果您有泊坞设置

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});  }}"
    }
  }
}

搜索猫名称的网址是

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

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

我建议有人努力让这项工作在IBM Cloudant上创建免费试用帐户,因为文档与他们的产品直接相关,并且更容易理解。