问题标签 [fts3]
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.
sqlite - SQLite3 fts3 AUTOINCREMENT 不工作
我正在尝试使用 fts3 在 sqlite3 中创建一个虚拟表,并将列作为自动增量,但是在插入值时,该列没有被填充。代码:
当插入:插入联系人(姓名)值('abc')时,'id'字段没有增加,表中的数据看起来只是
|abc
sqlite3 的 fts3 不支持自动增量吗?
问候,
约翰
android - FTS3 数据库中的别名 _id
我的应用程序使用带有 FTS3 的 SQLite 数据库。查询结果应使用SimpleCursorAdapter
. 但是我得到以下异常:
java.lang.IllegalArgumentException: column '_id' does not exist
做一些搜索我找到了这个答案:
Android Full Text Search and ListAdapter。我明白了,但我不知道如何为docid -> _id
. Android 页面上的 SearchableDictionary 示例对我没有帮助;-)
干杯,
罗伯特
sql - SQLite3 多个 FTS 表搜索
我的 sqlite 数据库中有三个 fts 虚拟表 - 两个有一个内容列,一个有 2 个列 - 标题和内容。假设一张表用于某些文章的内容和标题,另外两张用于评论及其注释。有什么方法可以在一个查询中在它们之间进行搜索吗?我需要合并所有结果并按相关性对它们进行排序,首先是文章及其标题,然后是评论和注释。我已经做了一些解决方法。我用搜索结果填充表格以显示在每次新搜索中,但我认为这不是一个好主意:
android - Android:获取下一行/上一行时,SQLite FTS3 变慢
我有一个 sqlite db,目前只有几个表,其中最大的一个有超过 10,000 行。该表有四列:id、term、definition、category。我使用了 FTS3 模块来加快搜索速度,这很有帮助。但是,现在当我尝试从表中获取“下一个”或“上一个”行时,它需要的时间比我开始使用 FTS3 之前要长。
这就是我创建虚拟表的方式:
这就是我获取下一行/上一行的方式:
当我在虚拟表上运行这些语句时:
- 下一个术语是在~300ms内获取,
- 上一个术语是在~200ms内获取
当我使用普通表(没有 FTS3 创建的表)执行此操作时:
- 下一个术语是在~3ms内获取,
- 上一个术语是在~2ms内获取
为什么会有这么大的差异?有什么办法可以提高这个速度吗?
编辑:
我仍然无法让它工作!
sql - 在 SQLite FTS3 搜索中包含部分匹配项
我的简单 SQLite FTS3 实现目前将用户查询与存储的结果匹配并返回它们,只要这些结果包含用户查询中的所有单词(换句话说,FTS 表是使用简单的标记器创建的)。
现在,我想让搜索更加智能,我希望它根据查询中匹配结果的单词数对结果进行排名/排序。例如,
目前返回
应该返回
以该顺序。换句话说,搜索输出不应局限于必然包含用户查询的所有单词的结果,而是将包含所有单词的结果放在列表中较高的位置,同时为返回部分匹配的结果留出空间。
一种简单的方法是使用用户输入的所有排列运行多个查询,并以所需的顺序对结果进行 UNION,但这将是相当低效的。
sql - 将 SQLite FTS3 与 INTEGER 列一起使用
我想使用 SQLite FTS3(实际上是 FTS4)来索引具有整数列的表,概念上是这样的:
我知道 FTS3 将除 rowid 之外的所有列视为 TEXT,因此我将不得不使用两个表:
我希望能够查询文档或给定文档中的页面:
我认为 NATURAL JOIN 要求我确保 rowid 保持同步,但最好的方法是什么?我应该使用 FOREIGN KEY 还是其他约束?子选择会比加入更好吗?
我想插入已经在数据库中的文档和页面以覆盖文本内容。这是否可以通过 SQL 以编程方式进行,还是我必须检查该行是否已存在于 info 表中?
我还想从给定文档的两个表中删除——有没有办法在一个语句中做到这一点?
非常感谢所有建议,但由于我是 SQL 新手,因此特别感谢代码示例!
更新:我完全不清楚如何在这里创建外键约束。如果我选择metadata
作为父表(这是我的偏好,在没有双向约束的情况下):
我得到Error: vtable constructor failed: data
(不出所料,因为docid
是 的别名rowid
,但我当然不能使用另一列,因为除rowid
must be之外的所有列TEXT
)。
而如果我反过来尝试:
表构造成功,但如果我尝试:
我明白了Error: foreign key mismatch
。
php - LInux:如何在 PHP 中安装 FTS3(用于 sqlite3)?
我试着问这个问题php - 是否有启用 fts3 的 php5-sqlite3 的二进制包?- 问 Ubuntu - 堆栈交换;但那里没有骰子 - 所以我会在这里用不同的词再试一次:如何在 Ubuntu Linux 服务器上的 SQLite3 下为 php 启用 FTS3?
我想使用 Sqlite 为 Mediawiki 启用 FTS3 - 我通常会收到“ no such module: fts3
”错误。
我已经找到:
- 如何为 php 启用 sqlite3?- 堆栈溢出- 建议
php5-sqlite3
从源代码中删除并安装 sqlite3(尽管没有具体提及 FTS3) - Old Nabble - SQLite - PHP < 5.3 中的 FTS3 索引,其中说:
> 这里是错误:
>
> 'SQLSTATE[HY000]: 一般错误:1 没有这样的模块:fts3'
>有一个编译时选项:SQLITE_ENABLE_FTS3
...我想,最终说没有其他方法可以为 PHP 的 SQlite3 激活 FTS3 - 除了从源代码构建用于 php 的 sqlite?这对我来说不是一个好选择,因为我在生产服务器上没有任何权利......这就是为什么我会再次问:是否有某种二进制包可以帮助我启用 FTS3?
如果没有二进制包 - 我想 php 的 sqlite3 部分将被编译为一个.so
对象。有没有办法说服 PHP 以某种方式.so
为特定的服务器目录加载“外部”(类似于如何使用ini_setdisplay_errors
在本地更改)?
编辑:奖金问题:假设我安装了 sqlite3,并从源代码启用了 FTS3;PHP 会在 中显示某种消息/指示phpinfo()
,该消息是什么?
提前感谢您的任何答案,
干杯!
ruby - 在 sqlite3 gem 上启用 FTS4
为了在 SQLite 上使用 FTS,我必须使用正确的配置对其进行编译。它起作用了,当我在 shell 中键入“sqlite3”时,我可以使用全文搜索。
不幸的是,在我的 Rails 应用程序中,使用 sqlite3 gem,我收到以下错误:
SQLite3::SQLException: 没有这样的模块: fts4: SELECT "items".* FROM "items"
似乎 gem 没有指向正确的 SQLite 版本。有什么线索吗?
iphone - 未知标记器:sqlite3 请求中的 icu
有问题请帮帮我。我的 sqlite 数据库中有一个虚拟表:
当我尝试对该表进行 SQL 查询时
我从数据库中收到下一个错误:错误:'unknown tokenizer:icu'。我已经下载了 sqlite 的源代码,将 sqlite.c 添加到我的 xCode4 项目中,并将 #define SQLITE_ENABLE_FTS4 添加到 sqlite.c 文件中。但问题依然存在。我正在尝试在模拟器中执行此操作,这可能是原因吗?
请帮帮我。如何使用 xCode 4 在 iPhone 上处理 FTS4?我应该使用一些古老的魔法吗?:)
玩的很开心!
ios - 以下:如何在 SQLite 中使用 FTS 和 Monotouch for iOS
我目前正在关注这个关于 MonoTouch、SQLite 和 FTS3 的小教程: How to use FTS in SQLite with Monotouch
我已经成功地完成了第 1 步和第 2 步。不幸的是,我在第 3 步遇到了问题,因为当我尝试编译 iPhone monotocuh 项目时,我收到了这个错误:
错误 1:mtouch 失败并显示以下消息:进程以代码 1 退出,命令:/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -gdwarf-2 -fobjc-legacy-dispatch - fobjc-abi-version=2 -miphoneos-version-min=4.2 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk /var/folders/lu/luWKJVufEMO0MYd3+T3MJ++++TI /-Tmp-/tmp4f24ee90.tmp/main.x86.o -o /var/folders/lu/luWKJVufEMO0MYd3+T3MJ++++TI/-Tmp-/tmp4f24ee90。tmp/Iusuite -framework CFNetwork -framework AssetsLibrary -framework CoreTelephony -framework EventKit -framework Foundation -framework CoreMotion -framework GameKit -framework MapKit -framework MediaPlayer -framework MessageUI -framework OpenGLES -framework StoreKit -framework UIKit -framework AddressBookUI -framework iAd -framework SystemConfiguration -framework AddressBook -framework AudioToolbox -framework AVFoundation -framework QuartzCore -framework CoreFoundation -framework CoreGraphics -framework CoreLocation -framework ImageIO -framework Security -framework CoreMedia -framework CoreVideo -framework ExternalAccessory -framework EventKitUI -framework QuickLook -framework AudioToolbox -lz -u _mono_pmip -u _CreateZStream -u _CloseZStream -u _Flush -u _ReadZStream -u _WriteZStream -liconv -lmono-2。0 -lmonotouch -L/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib -u _catch_exception_raise -L/Users/user/Develop/MonoDevelop/.../ -lSQLite3_iOS -force_load /Users/user/Develop/ MonoDevelop/.../Libraries/libSQLite3_iOS.a
ld:找不到-lSQLite3_iOS collect2的库:ld返回1退出状态(1)(Iusuite.Application)
这是我用作单点触控的附加命令
-gcc_flags "-L${ProjectDir} -lSQLite3_iOS -force_load ${ProjectDir}/Libraries/libSQLite3_iOS.a"
任何提示或想法?
感谢所有弗朗切斯科