Sqlite权重匹配全文搜索



我有一个像这样的fts3表:

 CREATE VIRTUAL TABLE docs USING fts3(id, title, body);

我想让标题匹配的权重高于内容匹配的权重

我做了什么:

    SELECT    
          case when title match 'word' then 1 else 0 end as titleRank,  
          case when body match 'word' then 1 else 0 end as contentRank      
          docs.*  
    FROM  docs  
    WHERE title match 'word' OR body match 'word'
    ORDER BY titleRank desc, contentRank desc

但似乎select case不与全文搜索(我使用这个工具,没有错误,没有响应,但如果我删除select case,它的工作)

我错在哪里?

有一个可能有用的偏移函数。在你的例子中,你知道标题列是索引1而正文列是索引2,所以你可以这样写:

SELECT *
FROM docs
WHERE docs MATCH 'title:word OR body:word'
ORDER BY SUBSTR(OFFSETS(docs), 1, 1), id;

这将在第1列(title)中匹配的行排在第2列(body)之前。

(编辑了OFFSETS()函数的右括号位置。)

相关内容

  • 没有找到相关文章

最新更新