2

我在 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,如何查询?

4

4 回答 4

3

正如文档所解释的,go*是前缀搜索并查找以 . 开头的任何单词go

你要搜索两个词,所以理论上,你必须做一个词组搜索。但是,"go *"它不起作用,因为前缀搜索需要一个实际的前缀。

您最好的选择是搜索该单词,并在您的代码中过滤掉仅在末尾出现的go所有返回记录。go

于 2013-05-27T07:24:28.853 回答
2
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”'

于 2015-11-30T09:28:07.097 回答
1

使用 '^go' 也可能有所帮助,它只会为您提供以 go 开头的条目(从 sqlite 版本 3.7.9 支持)

于 2013-09-25T10:19:19.497 回答
0
select * from table where columns MATCH '^go *'

这将给出结果:去,继续

select * from table where columns MATCH '^go*'

这将给出结果:去,去,去

于 2014-10-29T03:56:23.773 回答