以(后缀)结尾,并包含在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