问题标签 [fts4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1109 浏览

android - 在 SQLite FTS 中的任何其他内容之前首先要准确的短语?

假设搜索输入是“什么是”。这将匹配“whatever it is”以及“what is”,这是确切的短语。现在,我如何在排序中首先制作确切的短语?

从昨天开始我就一直在考虑这个问题,我一直在想出不同的解决方案,但每个解决方案都有自己的缺陷。

不过,这是我失败的方法(假设 input = 'what is'):

  • 这个问题是两个 SELECT 不是互斥的,所以会有重复。
  • 我不能使用 UNION,因为它们在等级列和片段函数上有所不同(首先将具有 START|what is|END,其他将具有 START|what|ENDSTART|is|END)。
  • 我也不能使用这个(我之前的问题),因为 MATCH 在 ORDER BY 子句中不起作用(因为结果表/选择不是原始 FTS 表)。

这是我目前的解决方案:

我在这里做的是:

  1. 在最里面的 SELECT 中,我正在做排序
  2. 在下一个 SELECT 中,我将过滤掉重复项(这会起作用,因为我还没有使用片段。
  3. 最后,如果 rowId 在第二个选择中,我将选择该片段。

正如您所料,这里的问题是订购完全消失了:(。

编辑:

我在 Android 中使用 FTS4(我不使用增强的查询语法,因为我不确定 Android 是否支持)。

0 投票
2 回答
790 浏览

sqlite - 使用没有列名的视图的 SQLite FTS4 外部内容

我正在使用FTS4withsqlite 3.8.10并且正在尝试设置这样的架构:

在这个玩具示例中,我有一个简单的表Test和一个视图,TestView它等效于该表。我从视图中创建了一个FTS4索引。TestFTS

然后我填充一些数据如下:

到现在为止还挺好。现在我想查询我的数据,例如:

这应该返回两行:

鲍勃

账单

相反,它返回单行并且该行是空白的。如果我从TestFTS表中查询所有数据,那么我可以看到这些值,但如果我不能进行MATCH类型查询,显然它没有多大用处:

鲍勃

账单

知道为什么在对没有列名的外部内容sSQLite使用查询时不返回数据,甚至不返回正确的行数吗?MATCHVIEW

====

更新:我尝试使用sqlite 3.13命名列视图,但遇到了同样的问题。

0 投票
1 回答
290 浏览

sql - 将 MATCH 与 AND/OR 运算符与参数一起使用在 SQLite 中不起作用

我在使用参数时使用匹配和/或运算符时执行 select 语句时遇到问题。

该声明如下所示:

但是当我用实际值更改@param1 和@param2 时,例如像这样

它工作正常。

我想问题是我的 AND 语句周围的那些单引号。有什么办法可以避免它们,但仍然可以使用和/或操作符,或者在其他地方有问题?

0 投票
1 回答
364 浏览

sqlite - 使用创建表(CreateFlags.FullTextSearch4) 不会自动增加 P​​K

我在 Visual Studio 2015 上使用 Xamarin 和这个 SQLite 插件:https ://github.com/praeclarum/sqlite-net

这是我的算法和对问题的解释:

然后:

上面的代码为 insertCount 返回 1,并且 item._id 总是按应有的方式更新。但是当我稍后查询该表时,所有行的 _id 始终为 0。例如:

这似乎有效,但感觉不对,它似乎并没有返回所有可能的结果。但主要问题是它为每个 _id 返回 0。我可以通过以下方式进行检查:

所有行 _id 都是 0。知道为什么以及如何解决它吗?

如果我创建没有 fts4 标志的表,我没有问题。但后来我无法进行 MATCH 搜索。

谢谢

0 投票
0 回答
195 浏览

ios - SQLite FTS4 复合 MATCH 不适用于 FMDB(iOS,Objective c)

我有一个简单的 FTS4 查询:

这个查询很好用SQLiteManager(我得到了一些结果),但是当我用 FMDB 执行这个查询时,我没有得到结果(没有错误,但也没有结果)。

当我将此查询与 FMDB 一起使用时,它可以工作:

似乎 FMDB 的大括号有问题。牙套有替代品吗?

FMDB 中是否存在错误?我使用简单的标记器:

0 投票
0 回答
535 浏览

android - 使用 fts4 的虚拟表未创建 android

我正在尝试使用fts4外部内容表创建一个虚拟表。该应用程序运行良好,API 23但当我运行它时API 16它崩溃了。

创建语句:

我的日志猫:

0 投票
0 回答
179 浏览

android - 什么是外部内容表?与普通虚拟表相比有什么优势?

什么是外部内容表,如何使用它们代替 fts3 虚拟表进行全文搜索?是否值得使用 fts4 而不是 fts3?

0 投票
1 回答
219 浏览

android - SQLite 检查表是否为 FTS4

我正在开发一个使用带有 FTS4 表的 SQLite 数据库的 Android 应用程序。

在应用程序中有一个从外部存储器导入数据库的选项。需要检查此数据库以确认它具有所有正确的表和列。我已经有了执行此操作的代码,但是我不知道如何检查表是“正常”还是 FTS4。这将导致稍后对MATCH它们进行查询时出现问题。

我能想到的检查表是否为 FTS4 的唯一方法是进行随机查询,MATCH如果出现错误,那是因为它们不是。

有没有更好的方法来做到这一点,就像只用一个命令?

0 投票
1 回答
123 浏览

android - 从 FTS 表中读取数据?

在其中一个实现功能集的应用程序中,必须直接从 sqlite 数据库执行频繁的搜索查询。我发现FTS可能是执行更快搜索的更好方法。我创建了它,但它没有返回任何数据。我通过打开 db 文件进行检查,Virtual Table Created 但那里没有数据。

我的问题是,虚拟表是否需要在获取任何数据之前手动插入数据。任何建议!

0 投票
0 回答
43 浏览

sqlite - SQLite:从 FTS3 迁移到 FTS4

我有一些已经使用 FTS3 扩展的 SQLite 数据库项目。假设我想改用 FTS4。为此必须做些什么?是否需要创建新表、重新填充或其他任何内容?或者只是将单词'fts3'改为'fts4'就足够了?