使用特定字母在完整搜索列内搜索

时间:2015-05-06 20:48:41

标签: crate

我想使用某些字母在完整的搜索栏内搜索,我的意思是:

return $http.get(url).then(function(req){
   return req.data;
});

返回很多行并且没问题。我的问题是,如何搜索示例:

select "Name","Country","_score" from datatable where match("Country", 'China');

我想看看,中国,智利等。

我认为match_type phrase_prefix可以作为答案,但我不知道如何使用(正确的语法)。

2 个答案:

答案 0 :(得分:1)

匹配谓词通过using match_type [with (match_parameter = [value])]支持不同的类型。

因此,在您的示例中使用phrase_prefix匹配类型:

select "Name","Country","_score" from datatable where match("Country", 'Ch') using phrase_prefix;

为您提供所需的结果。

请参阅match predicate文档:https://crate.io/docs/en/latest/sql/fulltext.html?#match-predicate

答案 1 :(得分:0)

如果您只需要匹配字符串列的开头,则不需要全文分析列。您可以使用LIKE operator代替,例如:

cr> create table names_table (name string, country string);
CREATE OK (0.840 sec)

cr> insert into names_table (name, country) values ('foo', 'China'), ('bar','Chile'), ('foobar', 'Austria');
INSERT OK, 3 rows affected (0.049 sec)

cr> select * from names_table where country like 'Ch%';
+---------+------+
| country | name |
+---------+------+
| Chile   | bar  |
| China   | foo  |
+---------+------+
SELECT 2 rows in set (0.037 sec)