我面临着一个数据库(特别是sqlite)查询,我不确定如何处理它。
我正在寻找所有在'name‘属性和一个常量之间有1-n个单词匹配的元组。按降序排序。
例如,它是一个包含食物项目的数据库。如果常量是"Maranatha Natural Almond Butter 26 of轻轻烘焙“,我希望数据库中包含该常量中至少一个单词的任何元组都被返回。例如,"Almond Butter Natural“会在"Maranatha Natural”之前,而"Almond“会在”Almond“之前,等等。
发布于 2012-09-28 04:51:34
匹配单词是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中的示例。
https://stackoverflow.com/questions/12627848
复制相似问题