如何将显示的建议文本移动到匹配的单词

时间:2013-10-10 21:02:01

标签: android sqlite fts4

我不知道我的问题写得不好,对不起,但这就是我需要的。

我有一个带有搜索活动的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。

怎么做?

2 个答案:

答案 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引擎中是否实现了INSTRSUBSTR

编辑:

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...