我试图在Cloudsearch中执行结构化前缀查询。
下面是查询args的一个片段(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
}然后我会得到一个列表的结果,我希望。
我在我的简短搜索中没找到多少。如何在查询中包括-?需要逃跑吗?还有其他字符需要转义吗?
发布于 2020-08-03 19:38:25
我通过这样的问题被指出了正确的方向:How To search special symbols AWS Search
下面是https://docs.aws.amazon.com/cloudsearch/latest/developerguide/text-processing.html的一个片段
文本处理在亚马逊CloudSearch .在标记化期间,使用Unicode文本分割算法中定义的单词中断规则,将字段中的文本流分割为可检测边界上的单独标记。
根据单词中断规则,空格和制表符等空格分隔的字符串被视为单独的标记。在许多情况下,标点符号被删除并作为空白来处理。例如,字符串在连字符(-)处拆分,at符号(@)处拆分。但是,没有空格的周期被认为是令牌的一部分。
据我所知,text和text-array字段是基于分析方案(在我的例子中是英语)来标记的。文本被标记,而-符号是一个单词中断标记。
这个字段不需要被标记。将索引类型更新为literal可以防止字段上的所有标记化,这允许我问题中的查询返回预期的结果。
https://stackoverflow.com/questions/63234676
复制相似问题