2012-02-08 21 views
3

私のシナリオでは、特殊文字に問題があります。 私はfts3を使用して作成されたsqliteデータベースを持っています。sqlite fts3から特殊文字を取得できません

私はSELECT col_1, col_2, offsets(table) FROM table WHERE table MATCH 'h*' LIMIT 50;

を使用する場合、私はHで始まる単語を取得することができています。

が、私は、@で始まる文字列を取得していない午前

SELECT col_1, col_2, offsets(table) FROM table WHERE table MATCH '@*' LIMIT 50; 

を使用しています。

どこが間違っていますか?アプローチに関するあらゆるポインタは素晴らしいでしょう。

答えて

0

SQLite FTS3 uses tokenizer called "simple" by defaultが原因で発生したと考えられます。文字@は英数字ではなく、そのUTFコードポイントが127より大きくないために破棄されます。この解釈は、FTSは特殊文字を検索するためではなく、自然のテキストを検索することです。

このようなクエリではなくLIKE演算子を使用することをお勧めします。あるいは、利用可能な他のトークナイザ、またはwrite your on in Cを検索することもできます。

+0

私は少し遅れていますが、ありがとうございました。 – Arup

関連する問題