CouchDB全文搜索

时间:2017-03-21 15:25:38

标签: full-text-search couchdb gridview-sorting couchdb-mango

我需要一些关于couchdb全文搜索的方向。它是否已在2.0中默认启用,或者我们是否必须重建启用它的couchdb?

方案: 它是一个文档管理系统,文档以网格显示。我需要能够对结果进行排序。从地图的几个更改减少到弹性索引后,现在我尝试使用芒果查询。问题是排序没有给出预期的结果。

{
  "selector": {
    "directoryName": {
      "$eq": "mail\\test\\inbox"
    }},
    "sort": [{"subject": "asc"}]
}

尝试排序"主题"或其他文本字段,混合结果,我想,"索引逻辑" (例如:返回已排序的主题:"此电子邮件...","您好...","此电子邮件...",绝对不是我需要的)。不要记得分析仪,代币等是否与某些事情有关"怪异的"搜索结果。例如,对于日期字段desc sort,它工作得更好,但我有一个"入侵者" 2014年文件的结果,显示2017年至desc的文件,包括2016年和2015年的文件。

我为一些可能的文档排序字段创建了json类型的索引。创建文本类型索引不起作用。我不知道全文搜索会解决我的排序"问题,但所有对cloudant查询语言和全文搜索的引用,我认为这个功能包含在2.0中。

2 个答案:

答案 0 :(得分:4)

CouchDB本身没有内置的全文索引器。你可以用芒果做很多事情,但是专用的全文索引器你可能会更好。

最常见的两个选项是:couchdb-luceneelasticseach

答案 1 :(得分:0)

在搜索了一段时间后失败了,最后,我得到了一些工作系统,请让我知道任何评论 如果有人想要全文搜索,也许你可以尝试,(删除所有评论并复制然后粘贴)



function (doc) {
  var prefix;
  for(prop in doc){
    if(prop=="_id"||prop=="_rev") // ignore _id, _rev or any unwanted properties
    continue;
    if(!Date.parse(doc[prop])) //ignore if it's a date type 
         prefix += doc[prop];
    else if(!isNAN(doc[prop])) // accept if it's a number type
        prefix += doc[prop];
    else if(typeof(doc[prop]!=="boolean") //ignore if it's a boolean type
        prefix += doc[prop];
  }
    var i;
    if (prefix) {
        for (i = 0; i < prefix.length; i += 1) {
            emit([prefix.slice(i)], doc);
        }
    }
//searchText?startkey=["abc"]&endkey=["abc\u9999"]&reduce=false&skip=0&limit=3
&#13;
&#13;
&#13;