我在我的 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 所指出的,以相反的顺序存储整个文本并对反向字符串运行前缀搜索是解决结尾/后缀搜索问题的可能解决方案,这是我最初的问题,但它不适用于“包含”搜索。我已经相应地更新了问题。
最佳答案
在我的 iOS 和 Android 应用程序中,我一直回避 FTS 搜索,因为它由于缺少后缀查询而不支持子字符串匹配。
解决方法似乎很复杂。
我求助于使用 LIKE 查询,虽然性能不如 MATCH,但可以满足我的需求。
关于iphone - 以(后缀)结尾并包含在 SQLite FTS 中使用 MATCH 进行的字符串搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11752840/