gpt4 book ai didi

swift - 如何在 SQLite FTS5 中突出显示前缀匹配

转载 作者:行者123 更新时间:2023-12-04 13:10:30 25 4
gpt4 key购买 nike

我有一个 SQLite FTS5 虚拟表,并试图在我的前缀查询结果中突出显示文本。我知道 highlight() 和 snippet() 辅助功能,但它们似乎并不完全支持我正在尝试做的事情。如果我的数据如下所示:

fts.my_data
-----------
John
Mike
Bill
Jane

我想使用前缀匹配进行查询,例如

select * from fts where fts match 'j*';

高亮和代码片段函数(假设 <b>...</b> 标签)将返回

<b>John</b>
<b>Jane</b>

但我只想在通配符之前突出显示匹配的前缀的确切部分:

<b>J</b>ohn
<b>J</b>ane

使用现有的 FTS5 辅助功能似乎没有任何方法可以做到这一点。我意识到 FTS5 提供了一个 API,以便您可以创建自己的辅助功能。我也可以在应用程序代码中实现该解决方案(我使用的是 Swift),尽管我怀疑这个问题可能会导致很多问题试图在应用程序代码中实现(例如,如何处理词干提取)。在我开始实现自己的解决方案之前,有谁知道使用现有的突出显示和/或片段功能是否真的可以尝试做我想做的事情?如果是这样,您能解释一下吗?

另外,我观察到其他几个现有的应用程序(例如 Contacts+)提供此功能,所以我知道它在某种程度上是可能的,并且我也想知道他们是如何做到的,如果有人知道的话。

最佳答案

对于其他寻求此问题解决方案的人,我能够弄清楚如何解决此问题。

trigram 分词器作为内置分词器之一添加到 SQLite 3.34.0 ( released December 1, 2020 ) 中。

在我的例子中,我正在部署到 iOS,目前,默认情况下只有 SQLite 3.32 与之捆绑,正如 this wiki page 确认的那样.所以我能够下载 SQLite 源代码并将其作为项目添加到我的 XCode 工作区作为“静态库”,并从我的应用程序项目中引用生成的 .a 静态库文件。我还必须在 SQLite 项目的 XCode 编译器选项中设置适当的 cflags,以使一切正常工作。但我现在可以分发我自己提供的 SQLite 版本 (3.34.1),使用我的特定选项编译,使用 FTS5 和 trigram tokenizer。

关于swift - 如何在 SQLite FTS5 中突出显示前缀匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66003918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com