【问题标题】:How to execute a structured query containing symbols in AWS Cloudsearch如何在 AWS Cloudsearch 中执行包含符号的结构化查询
【发布时间】:2020-08-04 03:54:59
【问题描述】:

我正在尝试在 Cloudsearch 中执行结构化前缀查询。

这是查询参数的 sn-p(csattribute 是文本类型)

{
    "query": "(prefix field=csattribute '12-3')",
    "queryParser": "structured",
    "size": 5
}

我上面的查询将得到No matches for "(prefix field=csattribute '12-3')"


但是,如果我将查询更改为

{
    "query": "(prefix field=csattribute '12')",
    "queryParser": "structured",
    "size": 5
}

然后我会得到一个我期望的结果列表。


我在简短的谷歌搜索中没有找到太多东西。如何在查询中包含-?需要逃避吗?还有其他需要转义的字符吗?

【问题讨论】:

    标签: amazon-web-services amazon-cloudsearch


    【解决方案1】:

    我通过这个 SO 问题指出了正确的方向:How To search special symbols AWS Search

    下面是来自https://docs.aws.amazon.com/cloudsearch/latest/developerguide/text-processing.html的sn-p

    Amazon CloudSearch 中的文本处理...在标记化期间, 字段中的文本流在可检测到时被拆分为单独的标记 使用 Unicode 文本中定义的分词规则的边界 分割算法。

    根据分词规则,用空格分隔的字符串 例如空格和制表符被视为单独的标记。在很多情况下, 标点符号被删除并被视为空格。例如,字符串 在连字符 (-) 和 at 符号 (@) 处分开。然而,时期 后面没有空格的被认为是令牌的一部分。

    据我了解,texttext-array 字段是根据分析方案进行标记的(在我的情况下是英文)。文本被标记化,- 符号是一个分词标记。

    此字段不需要标记化。将索引类型更新为 literal 会阻止字段上的所有标记化,这允许我的问题中的查询返回预期结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多