在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搜索索引中添加功能 的相关文章

  • 对具有许多索引的表进行缓慢的批量插入

    我尝试将数百万条记录插入到具有 20 多个索引的表中 在上次运行中 每 100 000 行花费了 4 个多小时 并且查询在 3 5 天后被取消 您对如何加快速度有什么建议吗 我怀疑是索引太多的原因 如果你也这么认为 如何在操作前自动删除索引
  • DBMS 中的阻塞因素

    DBMS 中的阻塞因素是什么 我查看的位表示它是每个记录的块的下限值 因此 B R 下限 其中 B 是块大小 R 是记录 我只是想知道 有人可以告诉我它使用的主要原因 以及它是否真的是地板 我对 FLOORED 的理解是 1 5 降到 1
  • JIRA JQL 按日期搜索 - 有没有办法获取 Today()(日期)而不是 Now()(日期时间)

    我正在尝试在 JIRA 中基于以下内容创建一些问题过滤器CreateDate 我能找到的唯一日期 时间函数是Now 以及与之相关的搜索 即 1d 4d 等 唯一的问题是 Now 是特定于时间的 因此无法获取特定日期创建的问题 i e Cre
  • 根据对象变量搜索对象列表

    我有一个对象列表 这些对象具有三个变量 ID 名称和值 这个列表中可能有很多对象 我需要根据ID或Name找到一个对象 并更改值 例子 class objec public string Name public int UID public
  • 何时对 MongoDB 集合调用 EnsureIndex?

    我什么时候应该打电话ensureIndex 插入单条记录之前 插入单条记录之后 或者调用之前find 看来我的评论有点被误解了 所以我会澄清一下 当你调用它时并不重要只要在第一次调用 find 之前的某个时刻调用它即可 换句话说 什么时候创
  • 在 Nano 中更新 CouchDB 文档 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我需要获取一个文档 更改 插入 删除
  • MySQL - 通过部分单词匹配和相关性评分进行高效搜索(全文)

    如何进行 MySQL 搜索 既匹配部分单词 又提供准确的相关性排序 SELECT name MATCH name AGAINST math IN BOOLEAN MODE AS relevance FROM subjects WHERE M
  • 使用 $or 运算符时 MongoDB 查询会变慢

    我正在尝试对我的收藏进行此查询Audios var querySlow palabra regex keywords options i or p pais in interested accents languageCodeTatoeba
  • PostgreSQL 中的仅索引扫描和位图索引扫描有什么区别?

    在我的查询中 我只想调用具有精确 where 条件的数据 这些where条件是在index html中创建的 Bu 解释显示了位索引扫描 我不明白为什么 我的查询如下所示 Select r spend r date from metadat
  • 为什么MongoDB不使用复合索引进行查询?

    以下是我对此集合的复合索引和单一索引 db Collection getIndexes 1 v 2 key id 1 name id ns service Collection 2 v 2 key FirstId 1 SecondId 1
  • 我可以在 WebGL 的 GLSL 中使用什么作为数组索引?

    是否只允许使用常量 或者我可以将其用于循环索引或任何其他动态值 In WebGL GLES2 是的 只允许使用常量 但是 如果您的代码可以展开 无论是由您自己还是由编译器 那么它就被视为一个常量 并且您有一个解决方法 例如 问题 unifo
  • 在休眠搜索中使用现有分析器AnalyzerDiscriminator

    Entity Indexed AnalyzerDefs AnalyzerDef name en tokenizer TokenizerDef factory StandardTokenizerFactory class filters To
  • Mongodb:$HINT 的性能影响

    我有一个使用复合索引并在 id 上排序的查询 复合索引在索引末尾有 id 它工作正常 直到我添加 gt我的查询的子句 IE 初始查询 db colletion find field1 blabla field2 blabla sort id
  • 如何根据 2D 索引和 1D 值向量替换 Numpy 3D 数组中 z 轴的值

    我似乎很难理解数组索引 给出了什么 我确实有一个 3d 数组 如下所示 a 3d np zeros 3 3 3 二维索引数组 a 2d index np array 0 0 1 0 0 0 0 1 1 astype bool 以及要放入 3
  • Matlab 字段名索引[重复]

    这个问题在这里已经有答案了 所以我有一个包含多个表的元胞数组 我试图访问表的第一个列名称 c table1 table2 table3 以下两行都给了我错误 fieldnames c 1 1 fieldnames c 1 1 Error i
  • MySQL-创建索引需要多长时间?

    谁能告诉我如何在 MySQL 中添加键扩展 我的数据库有 500 000 000 行 trans 列有 i INT UNSIGNED j INT UNSIGNED nu DOUBLE A DOUBLE 我尝试为一列建立索引 例如 ALTER
  • 从另一个未排序的numpy数组中的数据查找未排序的numpy数组中值的索引位置[重复]

    这个问题在这里已经有答案了 我有一个 numpy 数组 A 其中包含可以按任何顺序排列的唯一 ID 例如A 1 3 2 我有第二个 numpy 数组 B 它记录了 ID 何时被使用 例如B 3 3 1 3 2 1 2 3 1 1 2 3 3
  • 如何查找elasticsearch 6.2.1中存在的索引?

    我试图检查elasticsearch 6 2 1的RestHighLevelClient中是否存在索引 目前我正在使用以下代码 try OpenIndexRequest openIndexRequest new OpenIndexReque
  • 如何在 iBooks 上搜索桌面 UI

    我想像 iBooks 中那样显示 tableview 的搜索栏 我如何减少搜索栏的宽度以及如何在没有任何背景颜色的情况下显示它 另外 当页面显示时 如何最初隐藏搜索框 我可以想到两个选择 通过子类化 UITextfield 创建您自己的 U
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0

随机推荐