我不知道我的问题写得不好,对不起,但这就是我需要的。
我有一个带有搜索活动的Android应用程序和我自己的建议词典。
当我显示建议时,我会在第一行使用该项目的名称,并使用该项目描述的第二行。
问题是第二行中只有几个单词的空间,它从头开始显示描述。我想转移第二行文本以显示匹配的单词以及接下来的内容。
我希望它像谷歌一样工作。当它显示结果时,它会显示页面标题,以及第二个文本字段,其中包含找到您的单词的相关文本。
例如,如果我有这样的数据库:
item_name | item_description
Item1 | This is my description for stackoverflow.
Item2 | This is my second description for stackoverflow.
用户输入"my"
我想表达我的建议:
Item1
...my description for stacko
Item2
...my second description for
我正在使用带有Content Provider和SearchWidget的SQLite DB。
怎么做?
答案 0 :(得分:0)
此数据库查询将返回所需的结果:
SELECT item_name, '... '||SUBSTR(item_description, p) FROM (
SELECT *, INSTR(item_description, 'my') AS p FROM items_table WHERE p>0
);
我不确定在Android SQLite引擎中是否实现了INSTR
和SUBSTR
。
编辑:
FTS4不会返回匹配位置,至少我不这么认为。
尽管如此,您可以使用它来加速以前的查询:
SELECT item_name, '... '||SUBSTR(item_description, p) FROM (
SELECT *, INSTR(item_description, 'my') AS p FROM (
SELECT * FROM items_table WHERE item_description MATCH 'my'
)
);
答案 1 :(得分:0)
使用FTS时,您可以使用snippet function:
代码段功能用于创建文档文本的格式化片段,以便作为全文查询结果报告的一部分显示。
> SELECT snippet(items, '', '', '...', -1, 3)
FROM items
WHERE items MATCH 'my';
...is my description...
...is my second...