以(后缀)结尾,并包含在SQLite FTS中使用MATCH进行字符串搜索

我在iOS应用程序中使用SQLite FTS扩展。 它执行得很好,但问题是它只匹配字符串前缀(或从关键字搜索开始)。

SELECT FROM tablename WHERE columnname MATCH'searchterm *'

工作但是

SELECT FROM tablename WHERE columnname MATCH'* searchterm'

要么

SELECT FROM tablename WHERE columnname MATCH'* searchterm *'

才不是。

是否有任何解决方法可以使用FTS来构建类似于“LIKE'%searchterm%'”查询的查询。

编辑:

正如Retterdesdialogs指出的那样,以相反的顺序存储整个文本并在反向字符串上运行前缀搜索是解决/ suffix搜索问题的结束方法,这是我的原始问题,但它不适用于'contains'搜索。 我已经相应地更新了这个问题。


在我的iOS和Android应用程序中,我避开FTS搜索,原因是由于缺少后缀查询,它不支持子字符串匹配。

解决方法看起来很复杂。

我已经使用LIKE查询,虽然性能比MATCH低,但满足了我的需求。


要使其适用于包含查询,您需要存储所有可以搜索的术语后缀。 这有损数据库的大小,但可以通过压缩数据来避免。

SQLite FTS包含和后缀匹配


解决方法是将反向字符串存储在额外的列中。 看到这个链接(它不完全相同,它应该给出一个想法):

使用全文搜索搜索后缀

链接地址: http://www.djcxy.com/p/62095.html

上一篇: ends with (suffix) and contains string search using MATCH in SQLite FTS

下一篇: Close Apache connection with too large file uploads