在SQLite FTS中匹配

时间:2013-05-27 02:20:59

标签: sqlite full-text-search

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

  

ABC
  高清
  去   去   JDK
  sqlite的
  放手   继续   去   不去了

我使用查询:select * from table where columns MATCH 'go*'。结果:

  

转到
  去   放手   继续   去   不去了

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

4 个答案:

答案 0 :(得分:2)

正如documentation所述,go*是一个前缀搜索,可以找到以go开头的任何字词。

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

您最好的选择是搜索单词go,并在您的代码中过滤掉仅在结尾处发生go的任何返回记录。

答案 1 :(得分:1)

使用'^ go'也可能会有所帮助,这只会给你开始的命令(从sqlite版本3.7.9支持)

答案 2 :(得分:1)

select * from table where columns MATCH 'go*'

匹配包含 包含任何单个字的所有词组 开头

  

转到转到

     

转到转到

     

这里我们

     

...

select * from table where columns MATCH 'go'

匹配包含 包含任何单个字的所有词组 相等 go < / p>

  

转到转到

     

这里我们

     

...

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

匹配所有词组 单词开头 相等 go

  

转到转到

     

     

...

有人使用&#39; ^ go&#39; ,但它不起作用,魔力是&#39; &#34; ^走&#34; &#39;

答案 3 :(得分:0)

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

这将给出结果:     去,继续

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

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