首页 > 解决方案 > 如何使用 GET API 请求在 AWS Cloud Search 中执行部分字符串搜索

问题描述

我想在 AWS Cloud Search API 中搜索整个字符串以及部分字符串,

我有如下格式的可用数据,

[
{
  'name' : 'John',
  'specialities' : [
     'ios',
     'swift',
     'react native'
  ]
}, 
{
  'name' : 'Karl',
  'specialities' : [
     'ios developer',
  ]
}, 
{
  'name' : 'Maria',
  'specialities' : [
     'android developer',
  ]
}
]

现在我想要实现的是,如果我触发查询来搜索“ios 开发者”,那么它应该返回 Karl、John、Maria 所有三个记录。

因为按照我的要求,Karl 有完全匹配的字符串,我得到了,但是 John 有 'ios' 而 Maria 有我想要匹配的 'developer' 词。

根据 AWS 文档,它们允许单词完全匹配,这就是为什么我没有得到想要的结果。

我在下面提到了相关文档: https ://docs.aws.amazon.com/cloudsearch/latest/developerguide/searching-text.html#searching-text-phrases

标签: iosamazon-web-servicesamazon-cloudsearch

解决方案


从这些文档中,您正在寻找的是|

|——在搜索结果中包括包含该术语的文档,即使它们不包含其他术语。| 运算符仅适用于个别条款。例如,要包含包含两个术语之一的文档,请指定:term1 |term2。搜索 search?q=star wars |trek 包括同时包含 star 和 wars 或术语 trek 的文档。

例如ios |developer

如果您想将结果限制为仅specialities字段,您仍然可以使用这个简单的解析器和选项:

例如q='ios |developer'&q.options={fields: ['specialities']}.

请注意,您需要对此字符串进行 url 编码。大多数语言都有解决方案,或者您可以使用在线工具来做到这一点:https ://www.url-encode-decode.com/


推荐阅读