以(后缀)结尾,包含在SQLite FTS中使用MATCH进行stringsearch

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

SELECT FROM tablename WHERE columnname MATCH'searchterm *'

工作但是

SELECT FROM tablename WHERE columnname MATCH'* searchterm'

要么

SELECT FROM tablename WHERE columnname MATCH'* searchterm *'

才不是。

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

编辑:

正如Retterdesdialogs所指出的那样,以相反的顺序存储整个文本,并在反向string上运行前缀search是一个解决/ suffixsearch问题的结束方式,这是我的原始问题,但不适用于“包含”search。 我已经相应地更新了这个问题。

在我的iOS和Android应用程序中,我避开了FTSsearch,因为缺less后缀查询,不支持子string匹配。

解决方法似乎很复杂。

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

为了使它适用于包含查询,您需要存储您想要search的术语的所有后缀。 这使数据库真的很大,但可以通过压缩数据来避免。

SQLite FTS包含和后缀匹配

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

使用全文searchsearch后缀

Interesting Posts