在loudant搜索索引中添加功能

2024-03-03

我在 cloudant 中有一个 Json 文档:

{
  "_id": "3-f812228f45b5f4e4962505561953ew245",
  "_rev": "3-f812228f45b5f4e496250556195372b2",
  "wiki_page": "http://en.wikipedia.org/wiki/African_lion",
  "name": "african lion",
  "class": "mammal",
  "diet": "herbivore"
}

我想创建一个搜索索引,当我输入查询“afrian lion”或“lion africa”时,可以搜索该文档,...

我制作了一个函数,可以返回“doc.name”中所有排列的情况以进行索引(这个函数运行良好,并且也在纯JS环境中进行了检查)。然而,它在cloudant中不起作用,输出返回null当我输入查询时。

这是我在搜索索引中编写的代码:

function(doc){
  var list = [];
  function permute(ss, used, res, level, list){
    if(level==ss.length&&res!==""){
        list.push(res);
        return;
    }
    for(var i=0; i<ss.length; i++){
    console.log("loops");
        if (used[i]===true){
          continue;
        }

        if(level>=0){
          if (res!="" && list.indexOf(res)<0){
              list.push(res.trim());
          }

          used[i]=true;
          permute(ss, used, res+" "+ss[i], level+1, list)
          used[i]=false;
        }
      }
  }
  function permuteword(s){
      var ss=s.split(" ");
      var used = [];
    var res = "";
    list = [];
    permute(ss, used, res, 0, list);
    console.log(list);
  }

  var contentIndex=[];
  contentIndex=permuteword("african lion");
  for(var i=0; i<contentIndex.length; i++){
    index("default", contentIndex[i]);
  }
}

我该如何解决这个问题?


Update

您的更新看起来不错,但仍然存在一个问题:您没有从permuteword功能。我相信您还需要删除对console.log。完成这两件事后,我就可以使用以下搜索查询让它与 Cloudant 一起使用(我还将您的硬编码调用“非洲狮”改回了 doc.name):

default:"african"
default:"african lion"
default:"lion"
default:"lion african"

这是最终的脚本:

function(doc){
  var list = [];
  function permute(ss, used, res, level, list){
    if(level==ss.length&&res!==""){
        list.push(res);
        return;
    }
    for(var i=0; i<ss.length; i++){
        if (used[i]===true){
          continue;
        }

        if(level>=0){
          if (res!="" && list.indexOf(res)<0){
              list.push(res.trim());
          }

          used[i]=true;
          permute(ss, used, res+" "+ss[i], level+1, list)
          used[i]=false;
        }
      }
  }
  function permuteword(s){
    var ss=s.split(" ");
    var used = [];
    var res = "";
    list = [];
    permute(ss, used, res, 0, list);
    return list;
  }

  if (doc.name) {
    var contentIndex=permuteword(doc.name);
    for(var i=0; i<contentIndex.length; i++){
      index("default", contentIndex[i]);
    }
  }
}

更新的 JSFiddle:

https://jsfiddle.net/14e7L3gw/1/ https://jsfiddle.net/14e7L3gw/1/

原答案

我相信你的 Javascript 有问题。这permuteword函数没有返回任何结果。请参阅这个 JSFiddle:

https://jsfiddle.net/14e7L3gw/ https://jsfiddle.net/14e7L3gw/

注意:我添加了一些日志记录并注释掉了对 index.html 的调用。使用浏览器调试器运行以查看输出。

这是正在发生的事情:

  1. 第一次致电permuteword calls permute(["african","lion"], [], "", 0, []);
  2. 首先if in permuteword失败是因为level (0) != ss.length()(2和res == "".
  3. 然后函数循环遍历ss,但从不做任何事情,因为level = 0.
  4. 最终permuteword返回一个空数组,因此没有任何内容被索引。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在loudant搜索索引中添加功能 的相关文章

  • 如何在我的网站中创建全局搜索[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在我的网站中创建全局搜索 该网站是内部网站 无法在网上使用 我无法使用 Google 搜索来实现此目的 我的信息全部存储在不同的
  • 根据索引查找金字塔的行?

    给定一个像这样的金字塔 0 1 2 3 4 5 6 7 8 9 并给出金字塔的索引i where i代表i金字塔的第一个数字 有没有办法找到金字塔的行的索引i第一个元素属于 例如 如果i 6 7 8 9 它位于第 3 行 从第 0 行开始
  • 用子矩阵替换 numpy 矩阵元素

    鉴于我有一个索引方阵 例如 idxs np array 1 1 0 1 以及彼此大小相同的方阵数组 不一定与idxs mats array 0 0 0 0 5 1 0 3 1 1 我想替换每个索引idxs对应的矩阵为mats 得到 arra
  • 列表有简短的 contains 函数吗?

    给定一个列表xs和一个值item 如何检查是否xs包含item 即 如果任何元素xs等于item 有没有类似的东西xs contains item For performance considerations see Fastest way
  • 从中间部分匹配完成建议elasticsearch

    我有一个名为搜索建议具有以下 search suggest type completion analyzer simple payloads true preserve separators false preserve position
  • 内置方法读取couchdb文件大小?

    我正在尝试使用 couchdb 作为消息存储 并想报告消息大小 理想情况下 读取 size 属性会很好 最坏的情况是我可以检查整个文档 JSON 的字符串长度 我什至可能想使用尺寸作为查看键 您认为记录文档大小的最佳方法是什么 为什么您认为
  • Lua中如何在另一个表的表成员中搜索

    我正在编写一个 lua 程序 它有一个表 该表是另一个表的成员 当我向该成员表添加新日期时 一切正常 但是 当我想在该表中搜索时 无论我给出什么键 我总是会将最后一行添加到表中 如何在该成员表中正确搜索 Stream name functi
  • 实时搜索错误

    我正在获取用户偏好和角色 一切正常并且数据接收正确 默认值放置在单选按钮上以突出显示用户当前拥有的选项 我正在使用 Antd Design Table 组件 问题 当我将用户首选项更改为打印文档时 它确实通过数据库的状态成功更改了它 但是现
  • 在数据框中搜索唯一值并用它们创建表

    自从我不久前开始使用 R URL 将类似于此示例格式 可在 源 列中找到 URL 中对我来说很重要的部分是 utm source ADX 位 我的数据如下所示 用户 来源 1 2 3 我需要做的是从 URL 中捕获 utm source 并
  • 如何防止 CouchDB 在更新简单计数器时创建文档修订

    我想将计数器存储在 CouchDB 文档中 并在每个页面视图上递增 CouchDB 将创建本文档的完整修订版 只需 1 次计数器更新 这样会不会占用太多空间 考虑到我一天的点击量为 100 万次 我一天内可能会查看该文档的 100 万次修订
  • 两列上的唯一索引是否意味着每一列上都有一个索引?

    我的架构中有一个表 它对两列有唯一约束 UNIQUE Column1 Column2 SQlite 文档告诉我 这在这些列上创建唯一索引 http www sqlite org lang createtable html 我的问题是 这是否
  • Android 搜索界面未提交查询

    我按照官方教程实现了一个搜索界面 搜索小部件 搜索界面 http developer android com training search setup html密切 一切看起来都不错 但我无法提交搜索查询 当我单击键盘上的 发送 按钮时
  • MongoDB - 解释特定的解释输出

    我使用的是 MongoDB 版本 2 4 8 test 2014 03 25 14 42 13 0 gt gt gt db users getIndexes v 1 key id 1 ns test users name id v 1 ke
  • jQuery Cycle 插件 - 如何返回当前显示幻灯片的索引号?

    我目前正在使用Malsup 的 Cycle 插件 http jquery malsup com 我只是想知道是否可以让循环插件返回当前显示幻灯片的索引号 我想在特定幻灯片处于活动状态时更改页面内容 不知道如何实现这一点 你可以这样做 on
  • 正在搜索 Mercurial 存储库 (TortoiseHG)?

    有什么方法可以输入特定的文件名 例如 xyz txt 并使用 TortoiseHG 在 Mercurial 存储库中搜索该文件的任何签入 如果没有 为什么不呢 这不就是版本控制的用途吗 在 Hg Repository Explorer 窗口
  • 如何使用 pandas 对一系列值进行编码

    我有一个 pandas 数据框并且有一列age 我想将其编码为按特定范围分隔的分类值 例如 15岁以下的年龄应为0 15到30之间的年龄应更改为1等等 我找到了这种方法来做到这一点 在经历了关于使用的巨大困惑之后 and and age X
  • 如何在 couchdb 视图中调用另一个视图?

    我刚刚读完 couchdb 权威指南 一书 并开始摆弄设计文档 然而有一件事我不明白 到目前为止我看到的所有例子都有些线性 Example id 1 rev name first something blue child 2 id 2 re
  • 实现快速 Javascript 搜索?

    基本上 我有一个带有文本框的页面和 ul 列在其下面 这 ul 由用户的朋友列表填充 用户开始在文本框中输入朋友的名字 例如按 r 我想立即更新 ul 每次按键仅显示名字以 R 开头的朋友 例如 Richard Redmond Raheem
  • 在 JavaFX 中搜索 TableView 列表

    如何在 TableWie 中查找记录 例如通过 ID 并选择创建的行并将其放在 Java 8 JavaFX 中的屏幕中间 您可以使用以下方式搜索元素 int searchId table getItems stream filter ite
  • 如何在 Visual Studio 中搜索并让它忽略注释掉的内容?

    我正在 Visual Studio 2005 中重构 C 代码库 我现在已经完成了这个过程的一半 我已经注释掉了很多旧代码并替换或移动了它 现在我正在搜索 看看下一步必须更改 但搜索功能不断为我带来我不再关心的旧注释掉的内容 我还不想删除旧

随机推荐