我正在使用 FTS 查询数据库以提高搜索速度,因为我还需要在文本描述中搜索,
当我尝试使用单列查询时,其工作正常,如下所示
select * from productsearch where productsearch match ('prod_name:panasonic*tw*')
并且,
select * from productsearch where productsearch match ('prod_short_desc:samsung*s5*')
因此,上面的两个查询都给了我预期的结果,但是当我尝试使用组合两个查询时OR
运算符没有给我任何结果
select * from productsearch where productsearch match ('prod_name:panasonic*tw* OR
prod_short_desc:samsung*s5*')
所以,我想知道我在使用时是否在这里做错了什么OR
用于搜索多列的运算符
UPDATE
下面的查询工作正常,但不能满足我的要求,
select * from productsearch where productsearch match ('prod_name:panasonic* OR
prod_short_desc:samsung*')
您可以看到,如果我删除多个令牌,那么它可以正常工作OR
运营商也。
SQLite 的 FTS 仅支持简单的前缀搜索。
像这样的查询prod_short_desc:samsung*s5*
由两个表达式组成,prod_short_desc:samsung*
and s5*
,其行为与您编写的完全相同prod_short_desc:samsung* s5*
.
如果您已编译 SQLite 以增强查询语法,则可以使用如下查询:
prod_short_desc:samsung* prod_short_desc:s5* OR prod_name:panasonic* prod_name:tw*
如果您已为标准查询语法编译了 SQLite,则无法使用单个查询来执行此操作,因为 OR 运算符的优先级太高并且无法使用括号进行修改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)