gpt4 book ai didi

objective-c - 从字节偏移检测 UTF NSString 中的字符位置(是 SQLite offsets() 和编码问题)

转载 作者:搜寻专家 更新时间:2023-10-30 19:49:53 26 4
gpt4 key购买 nike

短篇小说:我有一个 UTF NSString 和一个字节偏移量。我想知道那个字节偏移处的字符。我该怎么办?

下面是长话短说:

根据this文档 offsets() 函数返回术语列内的字节偏移量。我已经为一些文本编制了索引,并在显示结果时使用该偏移量指向文本的特定部分。

关键问题是使用这个字节偏移我无法指向术语的正确位置。有时它指向正确,有时它与正确的点相距 3/4 个字符。

我的表很简单:

CREATE VIRTUAL TABLE t1 USING fts4(file, body, page);

如果我进行如下查询:

SELECT page, body, offsets(t1) from t1 where body match 'and';

我收到:

...........
502|1 0 427 3
505|1 0 370 3 1 0 1307 3 1 0 1768 3
506|1 0 10 3 1 0 1861 3 1 0 2521 3

...........

举个例子,如果我指向 body 的 char 427,我没有得到“and”的正确位置,但我跳离它 2/3 个字符。如果我转到 370,如果我转到 10,我会得到正确的位置。

我哪里错了?

最佳答案

参见 Sqlite FTS3 docs并且您会注意到偏移量和长度以字节而不是字符为单位。

为了显示正确的偏移量,您必须在将字节解码为字符串之前应用偏移量和长度。来自 Sqlite 的偏移量计算多字节字符的每个字节,而您使用该偏移量来计算字符

您的索引文本可能有 3 或 4 个两个字节的字符。因此出现了 off-by-3-or-4 问题。

关于objective-c - 从字节偏移检测 UTF NSString 中的字符位置(是 SQLite offsets() 和编码问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7407284/

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