【问题标题】:Android sqlite fts - using Offsets function with exact phrase searchAndroid sqlite fts - 使用带有精确短语搜索的偏移功能
【发布时间】:2019-10-29 04:54:02
【问题描述】:

我有一个阅读器类型的应用程序,我使用 sqlite 来存储文本并提供搜索功能,突出显示返回的搜索结果。我的问题是,例如,当我有以下文本时:

"假设N为正值,如果没有找到片段 包含对应于每个可匹配短语的短语匹配, sn-p 函数试图找到大约 N/2 的两个片段 它们之间至少包含一个短语匹配的标记 与当前行匹配的可匹配短语。 "

我正在搜索确切的短语“sn-p 函数尝试”,然后我希望得到 1 个搜索结果,但我得到 3 -> 第一个是 'sn-p',第二个是 'function',第三个是'尝试”。

我的 sqlite 查询如下:

'SELECT col1,col2, col3, offsets(index_table) FROM index_table WHERE col3 MATCH "snippet function attempts" '

我如何告诉 offsets() 函数返回我正在搜索的整个短语而不是短语的各个部分的偏移量?

【问题讨论】:

    标签: android sqlite full-text-search


    【解决方案1】:

    尝试使用:-

    "SELECT col1,col2, col3, offsets(index_table) FROM index_table WHERE col3 MATCH 'snippet function attempts' "
    
    • 即短语周围的单引号,而不是双引号。

    用双引号将短语括起来告诉 FTS 这些值是 根据短语查询的短语列表。短语查询是一个查询 检索包含一组指定术语或术语的所有文档 按指定顺序添加前缀,没有中间标记。短语 通过包含空格分隔的术语序列来指定查询 或双引号 (") 中的术语前缀。SQLite FTS3 and FTS4 Extensions

    【讨论】:

    • 没有 EXACT PHRASE 选项的查询示例是:SELECT _id, book_id, song,ch_no,txt_no, sn-p(textindex, "", "", "...", -1, 48), offsets(textindex), translit, transl2, comment FROM textindex WHERE textindex MATCH '真正的灵性导师' AND book_id='2' 会返回 236 个结果。
    • EXACT PHRASE 示例为:SELECT _id, book_id, song,ch_no,txt_no, sn-p(textindex, "", "", "...", -1, 48), offsets(textindex), translit, transl2, comment FROM textindex WHERE textindex MATCH '"真正的灵性大师"' AND book_id='2' 并返回 190 个结果,我可以看到所有这些结果都正确突出显示为确切的短语,但是 offsets() 返回 4 个项目,而不是 1 个单个项目
    • 我不能使用单引号,因为在这种情况下它被视为没有“EXACT PHRASE”选项的普通查询
    猜你喜欢
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多