我在 SQLite 中使用 FTS,我有数据:
abc
def
go to
go
jdk
sqlite
let
go on go
to
not going
我使用查询:select * from table where columns MATCH 'go*'
。结果:
去 去
去
去 去 去
去
去
不去
但我想要结果go to, go on
,如何查询?
我在 SQLite 中使用 FTS,我有数据:
abc
def
go to
go
jdk
sqlite
let
go on go
to
not going
我使用查询:select * from table where columns MATCH 'go*'
。结果:
去 去
去
去 去 去
去
去
不去
但我想要结果go to, go on
,如何查询?
正如文档所解释的,go*
是前缀搜索并查找以 . 开头的任何单词go
。
你要搜索两个词,所以理论上,你必须做一个词组搜索。但是,"go *"
它不起作用,因为前缀搜索需要一个实际的前缀。
您最好的选择是搜索该单词,并在您的代码中过滤掉仅在末尾出现的go
所有返回记录。go
select * from table where columns MATCH 'go*'
匹配所有包含任何以go开头的单词的短语
去_
去_
我们走
...
select * from table where columns MATCH 'go'
匹配包含任何等于go的单个单词的所有短语
去_
我们走
...
select * from table where columns MATCH '"^go"'
匹配所有以一个等于go的单词开头的短语
去_
进去_
...
有人回答'^go'但它不起作用,神奇的是'“^go”'
使用 '^go' 也可能有所帮助,它只会为您提供以 go 开头的条目(从 sqlite 版本 3.7.9 支持)
select * from table where columns MATCH '^go *'
这将给出结果:去,继续
select * from table where columns MATCH '^go*'
这将给出结果:去,去,去