3

特殊文字を見つける必要があります。単語の途中に置くと、SQLite FTSマッチは、存在しないかのように無視できます。例:

Text Body: book's

一致文字列が「本」の場合、「本」の結果を取得する必要があります。ポーターまたは単純なトークナイザーを使用しても問題ありません。

そのために、book!s、book?s、book | s、book、s、book:s…などの多くの文字を試しましたが、「本」を一致で検索すると、これらの結果は返されませんでした。

分かりません、なぜですか?

私が使用しているのは、コンテンツレスFTS4テーブルと外部コンテンツFTS4テーブルです。テキスト本文には各単語に多くの文字が含まれているため、検索時に無視するように変更する必要があります。

単語の特殊文字がどこにあるかわからないため、一致クエリを変更できません。また、match infoまたはsnippet()を使用するには、元の単語の長さをFTSインデックスの単語の長さと同じにする必要があります。そのため、これらの文字をテキスト本文から削除することはできません。

4

1 に答える 1

1

デフォルトのトークナイザーは句読点を無視せず、単語区切りとして扱います。

したがって、テキスト本文または一致文字列book'sは、2 つの単語books. これらは のような 1 つの作品には決して一致しませんbooks

のような文字を無視するには、独自のカスタム トークナイザー'をインストールする必要があります。

于 2013-03-17T10:05:48.173 に答える