1

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

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

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

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

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

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

4

2 回答 2

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

于 2015-05-07T07:46:32.277 回答
0

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

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)
于 2015-05-07T06:52:48.087 回答