Cloudant:如何对文本字段执行通配符搜索
Cloudant: How to perform wildcard searches on text fields
我在 cloudant 中有一个数据库,看起来像这样
count word
4 a
1 a boy
1 a boy goes
我想运行这样的查询
word: *boy*
我如何在 Cloudant 中执行此操作?我尝试了以下但没有用
{
"selector": {
"word": "*boy*"
},
"fields": [
],
"sort": [
{
"_id": "asc"
}
]
}
您可以使用 $regex
condition operator.
{
"selector": {
"word": {
"$regex": "boy"
}
},
"fields": [
],
"sort": [
{
"_id": "asc"
}
]
}
来自文档:
A regular expression pattern to match against the document field. Only matches when the field is a string value and matches the supplied regular expression.
因为正则表达式不适用于索引,所以如果您的数据集相当大,您应该考虑使用 Cloudant Search 而不是 Cloudant Query。
创建一个定义 word
文档索引的设计文档 属性:
{
"_id": "_design/search_example",
"indexes": {
"word": {
"index": "function(doc){if (doc.word) {index('word', doc.word, {'store': true});}}"
}
}
}
运行 搜索:
GET https://$HOST/$DATABASE/_design/search_example/_search/word?q=word:boy HTTP/1.1
结果将包括 word
文档 属性 中包含指定字符串的所有文档。 return 文档使用 ?q=word:boy&include_docs=true
希望对您有所帮助!
我在 cloudant 中有一个数据库,看起来像这样
count word
4 a
1 a boy
1 a boy goes
我想运行这样的查询
word: *boy*
我如何在 Cloudant 中执行此操作?我尝试了以下但没有用
{
"selector": {
"word": "*boy*"
},
"fields": [
],
"sort": [
{
"_id": "asc"
}
]
}
您可以使用 $regex
condition operator.
{
"selector": {
"word": {
"$regex": "boy"
}
},
"fields": [
],
"sort": [
{
"_id": "asc"
}
]
}
来自文档:
A regular expression pattern to match against the document field. Only matches when the field is a string value and matches the supplied regular expression.
因为正则表达式不适用于索引,所以如果您的数据集相当大,您应该考虑使用 Cloudant Search 而不是 Cloudant Query。
创建一个定义 word
文档索引的设计文档 属性:
{
"_id": "_design/search_example",
"indexes": {
"word": {
"index": "function(doc){if (doc.word) {index('word', doc.word, {'store': true});}}"
}
}
}
运行 搜索:
GET https://$HOST/$DATABASE/_design/search_example/_search/word?q=word:boy HTTP/1.1
结果将包括 word
文档 属性 中包含指定字符串的所有文档。 return 文档使用 ?q=word:boy&include_docs=true
希望对您有所帮助!