当我搜索“ bcde ”时,我想获得以下所有匹配项:
在AWS cloudsearch中实现此结果的方法是什么(最好使用简单的查询解析器)?前缀不会给我第一个结果。还有其他办法吗?
答案 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