Cloudant嵌套搜索和查看

时间:2017-04-25 09:05:20

标签: lucene couchdb cloudant

我不熟悉nosql数据库,我现在想知道以下内容: 我有一个lucene搜索索引,它搜索完整的数据库并且:

function (doc) {
  index("default", doc.name);
  index("name", doc.name, {"store": true, "index": false});
  if (doc.description) {
    index("default", doc.description);
    index("description", doc.description, {"store": true, "index": false});
  }
  if (doc.steps) {
    for (var i = 0; i < doc.steps.length; i++){
      index("default", doc.steps[i].description);
    }
  }
}

稍后应该使用用户提供的查询。现在我不得不处理某些文件的限制。是否可以做这样的事情(sqlish):

SELECT id, name, description FROM Table WHERE id IN (<Lucene search>) AND <restriction>;

在搜索结果的顶部创建视图。 这是可能的,还是有更有效的选择?

1 个答案:

答案 0 :(得分:1)

无法在搜索结果的顶部创建“视图”,但使用

可以回答您的SQL(ish)查询
  • Lucene索引(只要您需要的字段被编入索引)
  • MapReduce视图

如果不太了解您的意思,我会将此作为您现有Lucene搜索的扩展。

您针对Lucene索引指定的查询可能非常复杂 - 您可以在其中包含逻辑和括号,就像SQL WHERE子句一样。

q=name:"Bob Smith" AND description:"database expert" AND ( owner:"glynn" OR group_owner:"staff" OR world_owner:"everyone")

在上面的示例中,我返回与查询匹配的文档,但仅当满足三个“限制”参数之一时 - 以Unix的三层文件所有权为模型(您可以选择另一个访问控制方案)。