1

我不知道我的问题写得好不好,很抱歉,但这就是我需要的。

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

我将 SQLite DB 与 Content Provider 和 SearchWidget 一起使用。

怎么做到呢?

4

2 回答 2

0

对数据库的此查询将返回所需的结果:

SELECT item_name, '... '||SUBSTR(item_description, p) FROM (
    SELECT *, INSTR(item_description, 'my') AS p FROM items_table WHERE p>0
);

我不确定是否INSTRSUBSTR在 Android SQLite 引擎中实现。

编辑:

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'
    )
);
于 2013-10-11T10:11:46.687 回答
0

使用 FTS 时,您可以使用片段功能

片段函数用于创建文档文本的格式化片段,以作为全文查询结果报告的一部分显示。

> SELECT snippet(items, '', '', '...', -1, 3)
  FROM items
  WHERE items MATCH 'my';
...is my description...
...is my second...
于 2013-10-15T07:26:33.200 回答