2016-04-06 8 views
1

これらの完全なテキスト検索は、sqliteデータベースに対して実行しています。彼らは、私は、識別の目的のためにここに追加番号を除いて正確である:SQLiteエラー:FTS表​​現ツリーが大きすぎます(最大深度12)

1)A lot of it is caused by insecurities, issues that can trouble you so much that you end up losing your focus.

2)Surely all this is taken in consideration."

3)Discussing the experience of working with his long-deceased coach, Charlie Hilmann is characteristically fond: "We would spend as many as 10 hours in the field, and we eventually delivered just as much as expected.

4)It was challenging.

5)I realized that it's the greatest thing for me if I can use all of the peculiarity of a given moment within a given context, leverage all the inspiration and push it hard to go beyond.

6)You pull out something from the experience that really makes a difference."

7)Constant reminders of the fearless warriors that Charlie and Garrett used to be are the images and stories, relics of a time when experiencing pain and loss was no more than a requirement for achievement and success.

8)That was just the beginning of a journey, with hope and resolve at the forefront and a hunger toward one goal that I knew I could conquer.

すべてのこれらの文字列はそのまま、データベースに存在しています。 100%一致します。 SQLiteはクエリ2,4、および6を見つけることができません。私は理由を知りません。行の終わりに(データベースに格納されている正確な文字列に存在する)対になっていない引用符でも構いませんが、クエリ#4の問題は何ですか?

しかし、ここで私にもたらされる本当の問題はクエリ#3です。これは、エラーが発生します。コロンと引用符の不審な

FTS expression tree is too large (maximum depth 12)

、私は右の「好き」の後、途中で文字列をカットして、再度試してみました。私はまだエラーが発生します。どうして?それは長すぎますか?しかし、クエリ#7は長くなり、エラーは発生しません。実際には、ここではクエリ#3の約10倍の長さの他のクエリがあります。

グーグルが私に多くの助けにならない、私はトピックで見つけたすべてを理解することはできません。しかし、とにかく、私はsqlite3.cのオプションSQLITE_MAX_EXPR_DEPTH 0で自分のsqliteライブラリをコンパイルしましたが、何も変わっていないようです。私は依然としてクエリ#3でエラーが発生します。

+0

注: 'SQLITE_MAX_EXPR_DEPTH'を0に設定するだけでなく、' SQLITE_FTS3_MAX_EXPR_DEPTH'を12から24に増やして再コンパイルしましたが、エラーメッセージにはまだ ""(最大深度12) "と表示されます。 – movingtype

答えて

1

FTSクエリでは、フレーズクエリには"が使用され、列名の指定には:が使用され、標準構文では-がトークンを除外するために使用されます。 (documentationを参照してください。)

とにかく特殊文字はインデックスされません(tokenizers参照)。

+0

しかし、コロンと引用符は含まれていないので、 "fond"という単語の直後に#3のクエリーを切っても、まだエラーが出ると言う部分を読んだことがありますか? – movingtype

+0

私のために働く。 [mcve]を作成します。 –

+0

私はあなたのために構築できる/できなければならないMCVEの種類はわかりませんが、私は重要な発見をしました。それはそれを引き起こすハイフンです。 「長男」のハイフンを削除すると、問題はなくなります。動作する文字列のいずれかにハイフンを挿入すると、それ以上動作しなくなり、同じエラーが発生します。 – movingtype

関連する問題