gpt4 book ai didi

android - 使用 OR 运算符使用具有多个标记的全文搜索 (FTS) 在多列中进行搜索

转载 作者:IT王子 更新时间:2023-10-29 06:22:58 25 4
gpt4 key购买 nike

我正在使用 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 运算符搜索多列时我是否在这里做错了什么

更新

下面的查询工作正常,但不满足我的要求,

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*s5*,它们的行为与就像您编写了 prod_short_desc:samsung* s5* 一样。

如果您已经为增强的查询语法编译了 SQLite,您可以使用如下查询:

prod_short_desc:samsung* prod_short_desc:s5* OR prod_name:panasonic* prod_name:tw*

如果您已经为标准查询语法编译了 SQLite,则不能为此使用单个查询,因为 OR 运算符的优先级太高并且不能用括号修改。

关于android - 使用 OR 运算符使用具有多个标记的全文搜索 (FTS) 在多列中进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26012268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com