1

私の質問がうまく書かれているかどうかはわかりませんが、申し訳ありませんが、ここに私が必要とするものがあります。

検索アクティビティと提案用の独自の辞書を備えた Android アプリがあります。

提案を表示するときは、最初の行にアイテムの名前を使用し、2 行目にアイテムの説明を使用します。

問題は、2 行目に数語しか入力できず、最初から説明が表示されていることです。この 2 行目のテキストをシフトして、一致した単語と次に来るものを表示したいと思います。

Google のように機能することを望みます。結果が表示されると、ページのタイトルと、単語が見つかった関連テキストを含む 2 番目のテキスト フィールドが表示されます。

たとえば、次のような DB があるとします。

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

コンテンツ プロバイダーと SearchWidget で SQLite DB を使用しています。

どうすればそれができますか?

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
);

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

FTS を使用する場合、snippet 関数を使用できます。

スニペット機能は、フルテキスト クエリ結果レポートの一部として表示するために、ドキュメント テキストの書式設定されたフラグメントを作成するために使用されます。

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