我面临着一个数据库(特定于sqlite)的查询,我不知道如何处理。
我正在寻找所有在'name'属性和常量之间有1-n字匹配的元组。按降序排序。
例如,它是一个包含食品的数据库。如果常量是“Maranatha Natural Almond Butter 26oz Lightly Roasted”,我希望数据库中的任何元组包含至少一个返回该常量的单词。例如,“Almond Butter Natural”将出现在“Maranatha Natural”之前,它将出现在“Almond”等之前。
基本上只要元组属性和常量之间有一个相交的单词就可以匹配。
答案 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中的示例。