使用带有OR运算符的多个标记使用全文搜索(FTS)在多列中搜索

Lal*_*ani 8 sqlite android full-text-search fts4

我正在使用FTS查询我的数据库以提高搜索速度,因为我还需要在文本描述中搜索,

当我尝试使用单列进行查询时,其工作正常如下

select * from productsearch where productsearch match ('prod_name:panasonic*tw*')
Run Code Online (Sandbox Code Playgroud)

并且,

select * from productsearch where productsearch match ('prod_short_desc:samsung*s5*')
Run Code Online (Sandbox Code Playgroud)

所以,在两个查询之上给出了我预期的结果,但是当我尝试使用OR运算符组合两个查询时它没有给我任何结果

select * from productsearch where productsearch match ('prod_name:panasonic*tw* OR
                                                         prod_short_desc:samsung*s5*')
Run Code Online (Sandbox Code Playgroud)

所以,我想在使用OR运算符搜索多个列时知道我在这里做错了什么

UPDATE

以下查询工作正常,但不符合我的要求,

select * from productsearch where productsearch match ('prod_name:panasonic* OR 
                                                            prod_short_desc:samsung*')
Run Code Online (Sandbox Code Playgroud)

您可以看到,如果我删除多个令牌,那么它也可以与OR运算符一起正常工作.

Lal*_*ani 1

所以,我终于找到了解决方案,

我没有单独搜索所有列,而是在数据库中创建了一个列,其中包含要搜索的所需列的数据,

例子

我需要在prod_name&prod_short_desc列中搜索,因此我创建了一个在数据库中命名的列,并附加了&data的值,然后查找唯一的字段,效果就像一个魅力prod_nameprod_short_descdata

产品名称| 产品短描述

samsung  | samsung s5
Run Code Online (Sandbox Code Playgroud)

所以,现在我将两列的数据合并为一列,并以空格作为分隔符

数据

三星 三星 S5

然后使用以下查询进行搜索确实非常快,

select * from productsearch where productsearch match ('samsung*s5*')
Run Code Online (Sandbox Code Playgroud)