与常量相比,按字匹配#的降序选择属性

时间:2012-09-27 18:27:22

标签: sqlite

我面临着一个数据库(特定于sqlite)的查询,我不知道如何处理。

我正在寻找所有在'name'属性和常量之间有1-n字匹配的元组。按降序排序。

例如,它是一个包含食品的数据库。如果常量是“Maranatha Natural Almond Butter 26oz Lightly Roasted”,我希望数据库中的任何元组包含至少一个返回该常量的单词。例如,“Almond Butter Natural”将出现在“Maranatha Natural”之前,它将出现在“Almond”等之前。

基本上只要元组属性和常量之间有一个相交的单词就可以匹配。

1 个答案:

答案 0 :(得分:0)

匹配单词是SQLite的full-text search extension所针对的。请阅读该页面以了解如何编译SQLite以及可能的内容,但我会添加一些评论:

使用如下查询进行简单匹配:

SELECT * FROM foods_fts_tab WHERE name MATCH 'Maranatha Natural Almond etc.'

这将返回至少有一个单词匹配的所有记录。

您可以使用辅助功能返回的信息对匹配进行加权。 例如,

SELECT ... ORDER BY length(offsets(foods_fts_tab)) DESC

将按匹配单词的数量排序。

您要求的是单词匹配的数量,但真实的搜索引擎也会使用其他信息来计算相关性分数。请参阅第4.3节中的matchinfo()功能和附录A中的示例。