Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动完成匹配SQL中的多个列时的排序结果_Sql_Android_Sqlite_Autocomplete - Fatal编程技术网

自动完成匹配SQL中的多个列时的排序结果

自动完成匹配SQL中的多个列时的排序结果,sql,android,sqlite,autocomplete,Sql,Android,Sqlite,Autocomplete,我遇到了一个我正在处理的自动完成字段的问题。我正在使用的字段由表单“()”组成。当用户开始键入文本时,我希望显示与NAME或code匹配的任何结果 例如,如果此列表包含项目及其代码,如“个人计算机(PC)”,则如果用户键入“p”、“PC”、“Per”等,我希望该列表弹出该行 我已经在SQLite中使用了如下查询: SELECT * FROM table WHERE name LIKE "?%" or code LIKE "?%" 然而,我现在遇到的问题是如何最好地对从中得到的结果进行排序。例如

我遇到了一个我正在处理的自动完成字段的问题。我正在使用的字段由表单
“(
)”
组成。当用户开始键入文本时,我希望显示与
NAME
code
匹配的任何结果

例如,如果此列表包含项目及其代码,如“个人计算机(PC)”,则如果用户键入“p”、“PC”、“Per”等,我希望该列表弹出该行

我已经在SQLite中使用了如下查询:

SELECT *
FROM table
WHERE name LIKE "?%" or code LIKE "?%"
然而,我现在遇到的问题是如何最好地对从中得到的结果进行排序。例如,如果有人输入“PC”,我希望“个人电脑(PC)”是第一个结果。然而,如果有另一行(你必须忍受我,因为这是人为的)“PC案例(301)”,那么我无法对结果进行简单排序,以确保首先出现最佳匹配。按名称和代码排序都会首先返回PC案例

我希望查询首先返回最佳匹配项,而不是按字母顺序返回项目。我是否可以在SQLite中使用这样的函数来实现这一点,或者我应该返回结果,然后扰乱代码中的顺序


如果有帮助的话,我正在Android上为FilterQueryProviders使用它。

是的,您应该在查询中实现FullTextSearch并使用匹配。

参考文献:

这是一个很长的时间后的事实,但我已经解决了我的困境,而不必诉诸疯狂的排序策略


基本上,一旦自动完成变得足够复杂,您就需要实现自己的游标适配器(实现FilterQueryProvider),然后重写convertToString()。这样,最终可以通过RunQuices()来执行复杂的查询,但是它可以将它转换成CurrttoStRew()的可读窗体。

我不知道这对我的情况有什么帮助,因为这是排序问题,而不是匹配问题。您可能需要考虑切换到全文搜索和使用排序。