如何在aws cloudsearch中搜索确切的子字符串?

时间:2016-12-20 09:37:59

标签: full-text-search amazon-cloudsearch

当我搜索“ bcde ”时,我想获得以下所有匹配项:

  • '一个的 BCDE '
  • '的 BCDE F'
  • '一个的 BCDE F'

在AWS cloudsearch中实现此结果的方法是什么(最好使用简单的查询解析器)?前缀不会给我第一个结果。还有其他办法吗?

2 个答案:

答案 0 :(得分:1)

经过几次尝试并没有成功。我决定如下:

我创建了一个文本数组字段,并将其从后到前按字符串的一部分存储起来并且有效。

示例:我的字符串是“abcde”,我搜索bcde。这不行 但在我的字段中,text-field将是以下字符串: e,de,cde,bcde,abcde。因此,您将找到“abcde”,因为他将在文本数组字段中找到该术语。

哦,伙计,但如果我搜索bcd这个词不在文本数组字段中。 好吧,但字符串“bcde”以“bcd”开头,所以它的工作原理! =)

我要插入的php文件看起来像这样:

$term = "abcde";

$arrStr = str_split($term);
$arrTerms = [];
$aux = 1;
foreach($arrStr as $str){
    $arrTerms[] = substr($term,($aux * -1));
    $aux++;
}

$data = [
    'type'   => 'add',
    'id'=> [your_id],
    'fields' => [
        'id'=> [your_id],
        'field-text' => $term
        'field-text-array' => $arrTerms

    ],
];

答案 1 :(得分:0)

如果索引字段的类型为“text”,则简单的结构化查询将返回包含查询字符串的所有匹配项。

实施例

  

查询:(和part_part_number:'009')

结果:

1   _score  10.379914
part_part_number    009

2   _score  10.379914
part_part_number    A-009-DY

 3      _score  10.379914
part_part_number    BY-009