我的Cloudsearch索引目前没有为one-two three
返回任何结果,但它会为one two three
返回一个(正确)结果(并且在搜索{{1}时也会在结果中正确包含)等等)
我的理解是,这是因为可搜索的短语被分解为他们的标记(单词),其中空格和标点符号充当分隔符。因此,two three
和one
会成为单独的令牌,但two
不是有效令牌,因此找不到任何结果。来自Cloudsearch docs:
在标记化期间,使用Unicode文本分割算法中定义的分词规则,将字段中的文本流拆分为可检测边界上的单独标记。
该Unicode文件is here。
我希望能够搜索one-two
并找到相关结果,以及其他一些标点字符,例如one-two three
。是否可以使用Cloudsearch进行配置?
答案 0 :(得分:0)
我刚刚意识到一个简单的解决方案,虽然在技术上不能回答我的问题,但工作正常。我只需要在将查询字符串发送到云搜索之前对其进行预处理,方法是将-
或/
或我想要的任何字符替换为单个空格。
这样,one-two three
实际上会搜索one two three
,并返回正确的结果。