SQLite FTS中的匹配

SQLite FTS中的匹配,sqlite,full-text-search,Sqlite,Full Text Search,我在SQLite中使用FTS,我有以下数据: abc def 转到 去 jdk sqlite 放手 继续 前往 不去 我使用查询:从列与“go*”匹配的表中选择*。结果: 转到 去 放手 继续 前往 不去 但是我想要结果go-to,go-on,如何查询?正如解释的那样,go*是一个前缀搜索,查找以go开头的任何单词 你想搜索两个单词,所以理论上,你必须进行短语搜索。 但是,“go*”不起作用,因为前缀搜索需要实际的前缀 您最好搜索单词go,并在代码中过滤掉所有返回的记录,其中go只出现在末尾。使

我在SQLite中使用FTS,我有以下数据:

abc
def
转到

jdk
sqlite
放手
继续
前往
不去

我使用查询:
从列与“go*”匹配的表中选择*
。结果:

转到

放手
继续
前往
不去

但是我想要结果
go-to,go-on
,如何查询?

正如解释的那样,
go*
是一个前缀搜索,查找以
go
开头的任何单词

你想搜索两个单词,所以理论上,你必须进行短语搜索。 但是,
“go*”
不起作用,因为前缀搜索需要实际的前缀


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

使用“^go”可能会有所帮助,因为它只会给您以go开头的条目(受sqlite版本3.7.9支持)

这将产生以下结果: 去吧,去吧

select * from table where columns MATCH '^go*'
这将产生以下结果: 去,去,去

select * from table where columns MATCH 'go*'
匹配包含任何单个单词开始的所有短语

转到

转到

我们开始了

匹配所有包含任何单个单词相等的短语

转到

我们开始了

匹配所有单个单词开头的短语,其中相等

转到

进入

有人回答说,“^go”,但它不起作用,神奇的是,“^go”

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