Cloudant-使用数字存储为文本的Lucene范围搜索

Arek Dygas

我在Cloudant中有许多文档,这些文档的ID字段为字符串类型。ID可以是一个简单的字符串,例如“ aaa”,“ bbb”或作为文本存储的数字,例如“ 111”,“ 222”等。我需要能够使用上述字段进行全文搜索,但是我遇到了一些问题问题。

假设我有两个文档,分别具有ID =“ aaa”和ID =“ 111”,然后使用查询进行搜索:

  • 编号:aaa
  • ID:“ aaa”
  • ID:[aaa TO zzz]
  • ID:[“ aaa”至“ zzz”]

按预期返回第一个文档

  • 编号:111

什么都不返回,但是

  • ID:“ 111”

返回第二个文档,因此至少有一种方法可以检索它。

不幸的是,当搜索范围时:

  • ID:[111至999]
  • ID:[“ 111”至“ 999”]

我没有结果,我也不知道该如何解决该问题。这种情况下有什么特殊语法吗?

更新:

索引功能:

function(doc){
  if(!doc.ID) return;
  index("ID", doc.ID, { index:'not_analyzed_no_norms', store:true });
}

将索引更改为已分析没有帮助。分析器本身是关键字,但更改为标准也无济于事。

更新2

仅添加更多上下文,因为我认为我错过了一个关键点。我正在索引的字段将使用范围进行搜索,用户可以提供最小值和最大值。因此,可能其中一个将数字存储为字符串,而另一个将是标准的非数字文本。例如,搜索ID> =“ 11”和ID <=“ foo”的所有文档。

假设数据库包含ID为“ 1”,“ 5”,“ alpha”,“ beta”,“ gamma”的文档,则此查询应返回“ 5”,“ alpha”,“ beta”。请注意,实际上应该返回“ 5”,因为字符串“ 5”大于字符串“ 11”。

Arek Dygas

我们的团队只是想出一种解决方法。我们设法通过在上限值上添加一些任意字符(例如'a),并引入其他搜索词来排除ID介于上限值和上限值+'a'之间的文档,从而获得适当的结果。

搜索范围时

编号:[X TO Y]

实际的查询是

(ID:[X TO Ya]和-ID:{Y TO Ya])

例如,要查找ID在23到758之间的文档,我们执行

(ID:[23至758a]和-ID:{758至758a])。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Cloudant / Bluemix地理搜索

来自分类Dev

Cloudant / Lucene的模糊搜索没有结果

来自分类Dev

使用本地CouchDB开发Cloudant

来自分类Dev

Cloudant搜索:使用全文本索引匹配整个短语

来自分类Dev

Cloudant 通过 curl 添加 lucene 索引

来自分类Dev

Cloudant:跨数据库搜索

来自分类Dev

分页在cloudant上的搜索索引

来自分类Dev

Cloudant 按嵌套对象的属性搜索文档

来自分类Dev

Cloudant 全文搜索“太多布尔“请求”

来自分类Dev

如何使用 cloudant-client 搜索 cloudant 地理空间索引的文档

来自分类Dev

将Cloudant API与IBMCloudCode结合使用

来自分类Dev

在Cloudant中为Json建立搜索索引

来自分类Dev

如何在 cloudant 中为下面的 cloudant json 数据编写选择器查询

来自分类Dev

搜索cloudant数据库时如何使用“排序”?

来自分类Dev

使用 nodejs-cloudant (nano) 在 Cloudant Local 上未经授权的管理员

来自分类Dev

如何准备Couchdb / Cloudant设计文档以搜索所有字段?

来自分类Dev

Cloudant搜索:为什么我的通配符不起作用?

来自分类Dev

Cloudant搜索:是否可以对文档进行加权?

来自分类Dev

通过Cloudant-Client API访问搜索索引

来自分类Dev

在Cloudant中的Lucene查询字符串中搜索日期和时间

来自分类Dev

使用Cloudant-Python库使用API密钥进行连接

来自分类Dev

如何使用PouchDB安全地连接到Cloudant?

来自分类Dev

如何在Cloudant / CouchDB中使用我的SQL知识?

来自分类Dev

使用Cloudant的Java客户端时如何获取计数?

来自分类Dev

使用Cloudant中的视图进行无条件匹配

来自分类Dev

使用Cloudant的IBM Container上的MFPF不起作用

来自分类Dev

在Cloudant中使用复制时,如何/可以应用“限制”?

来自分类Dev

如何使用IBM Cloudant和Postman获取数据的特定字段?

来自分类Dev

使用Angular访问Cloudant中的数据库

Related 相关文章

  1. 1

    Cloudant / Bluemix地理搜索

  2. 2

    Cloudant / Lucene的模糊搜索没有结果

  3. 3

    使用本地CouchDB开发Cloudant

  4. 4

    Cloudant搜索:使用全文本索引匹配整个短语

  5. 5

    Cloudant 通过 curl 添加 lucene 索引

  6. 6

    Cloudant:跨数据库搜索

  7. 7

    分页在cloudant上的搜索索引

  8. 8

    Cloudant 按嵌套对象的属性搜索文档

  9. 9

    Cloudant 全文搜索“太多布尔“请求”

  10. 10

    如何使用 cloudant-client 搜索 cloudant 地理空间索引的文档

  11. 11

    将Cloudant API与IBMCloudCode结合使用

  12. 12

    在Cloudant中为Json建立搜索索引

  13. 13

    如何在 cloudant 中为下面的 cloudant json 数据编写选择器查询

  14. 14

    搜索cloudant数据库时如何使用“排序”?

  15. 15

    使用 nodejs-cloudant (nano) 在 Cloudant Local 上未经授权的管理员

  16. 16

    如何准备Couchdb / Cloudant设计文档以搜索所有字段?

  17. 17

    Cloudant搜索:为什么我的通配符不起作用?

  18. 18

    Cloudant搜索:是否可以对文档进行加权?

  19. 19

    通过Cloudant-Client API访问搜索索引

  20. 20

    在Cloudant中的Lucene查询字符串中搜索日期和时间

  21. 21

    使用Cloudant-Python库使用API密钥进行连接

  22. 22

    如何使用PouchDB安全地连接到Cloudant?

  23. 23

    如何在Cloudant / CouchDB中使用我的SQL知识?

  24. 24

    使用Cloudant的Java客户端时如何获取计数?

  25. 25

    使用Cloudant中的视图进行无条件匹配

  26. 26

    使用Cloudant的IBM Container上的MFPF不起作用

  27. 27

    在Cloudant中使用复制时,如何/可以应用“限制”?

  28. 28

    如何使用IBM Cloudant和Postman获取数据的特定字段?

  29. 29

    使用Angular访问Cloudant中的数据库

热门标签

归档