在使用DorisDB过程中,为表建立了倒排索引,但是按照官网示例无法使用MATCH_ALL 或者MATCH_ANY进行查询;
异常报错:
SELECT * FROM hackernews_1m WHERE comment MATCH_ALL 'OLAP' ;
执行失败: Error Failed to execute sql: org.apache.doris.common.AnalysisException: errCode = 2, detailMessage = Syntax error in line 1: SELECT * FROM hackernews_1m WHERE comment MATCH_ALL 'OLAP' ; ^ Encountered: IDENTIFIER Expected: ||, COMMA
官方示例:
使用like查询正常,表建立与官网一样
Session System Log QueryProfile Configuration
Q Error X
Failed to execute sql:org.apache.dol
编辑器格式化
ckernews1mWHEREcomment MATCHA
当前数据库:patenteval_other
Encountered:IDENTIFIEF
SELECT count()FROM hackernews_1m WHERE comment MATCH ANY ‘OLTP’;
Expected:,COMMA
O执行
执行结果
8
执行失败:Error Failed toexecutesql:org.apache.doris.common.AnalysisException:errCode=2,detailMessage=Syntax errorin line1:.ckernews_1mWHEREcomment MATCHANYOLTP'Encountered:IDENTIFIER
Expected:Il.COMMA
SELECT count()FROM hackernews_1m WHERE comment MATCH_ANY ‘OLTP'
执行时间: Oms
Total Oitems 1>20/page
该回答引用GPTᴼᴾᴱᴺᴬᴵ
在DorisDB中,倒排索引的查询可以使用 IN 关键字或 = 进行查询,而不是使用 MATCH_ALL 或 MATCH_ANY。
例如,查询 hackernews_1m 表中 comment 列包含 'OLAP' 的所有行可以使用以下查询语句:
SELECT * FROM hackernews_1m WHERE comment IN ('OLAP');
或者
SELECT * FROM hackernews_1m WHERE comment = 'OLAP';
注意,在使用 IN 关键字进行查询时,需要将查询条件用括号括起来。如果要查询多个关键字,可以将它们用逗号隔开,如下所示:
SELECT * FROM hackernews_1m WHERE comment IN ('OLAP', 'DorisDB');
或者
SELECT * FROM hackernews_1m WHERE comment = 'OLAP' OR comment = 'DorisDB';
需要注意的是,如果表中的列包含中文,需要将查询条件用单引号括起来。例如:
SELECT * FROM hackernews_1m WHERE title = '中文标题';