【发布时间】:2009-10-27 19:42:15
【问题描述】:
我在处理一个自动完成字段时遇到了问题。我正在使用的字段由"<NAME> (<CODE>)" 形式组成。当用户开始输入文本时,我想显示任何匹配 NAME 或 CODE 的结果。
例如,如果此列表包含项目及其代码,例如“个人计算机 (PC)”,那么我希望列表在用户键入“P”、“PC”、“Per "等。
我已经通过这样的查询在 SQLite 中正常工作:
SELECT *
FROM table
WHERE name LIKE "?%" or code LIKE "?%"
但是,我现在遇到的问题是如何最好地对由此返回的结果进行排序。例如,如果有人输入“PC”,我希望“Personal Computer (PC)”成为第一个结果。但是,如果还有另一行(您必须忍受我,因为这是人为的)“PC Case (301)”,那么我无法对结果进行简单的排序以确保 best 匹配首先出现。按名称和代码排序均首先返回 PC 机箱。
我想要一个查询,它首先返回最佳匹配,而不是按字母顺序排列的项目。我可以在 SQLite 中使用这样的函数来获取它,还是应该返回结果然后弄乱代码中的顺序?
如果有帮助,我将在 Android 上将其用于 FilterQueryProviders。
【问题讨论】:
-
您可能需要考虑切换到全文搜索并使用排名。
标签: sql android sqlite autocomplete