2016-04-06 20 views
1

Bu tam tam metin aramalarını bir sqlite veritabanına karşı çalıştırıyorum.SQLite hatası: FTS ifade ağacı çok büyük (maksimum derinlik 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.

: Onlar tanımlama amacıyla burada eklendi numaraları dışında tam olarak 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.

Bütün bu dizeleri harfi harfine veritabanında yer almaktadır. % 100 eşleşme. SQLite 2, 4 ve 6 sorgularını bulamaz. Neden olduğu hakkında hiçbir fikrim yok. Çizginin sonundaki eşlenmemiş alıntılar olabilir (veritabanında saklanan tam dizede bulunur), ancak 4. sorgudaki sorun nedir?

Ama beni buraya getiren asıl sorun sorgu # 3. kolon ve tırnak işaretinin Şüpheli

FTS expression tree is too large (maximum depth 12)

, hemen "düşkün" den sonra, ortada dize kesip tekrar denedi: Bu hataya neden oluyor. Hala hatayı alıyorum. Niye ya? Çok mu uzun Ancak # 7 sorgusu daha uzun ve herhangi bir hataya neden olmaz. Aslında, burada sorgu # 3 kadar yaklaşık 10 kat ve çalıştığı başka sorgularım var.

Googling bana fazla yardımcı olmuyor, konuyla ilgili bulduğum her şeyi anlayamıyorum. Yine de, kendi sqlite kitaplığımı sqlite3.c'deki SQLITE_MAX_EXPR_DEPTH 0 seçeneği ile derledim, ancak hiçbir şey değişmemiş gibi görünüyor. Ben hala yarısında kestiğinde bile # 3 sorgusuyla hatayı alıyorum.

Herhangi bir fikir, kimse? FTS sorguları ise

+0

Not: 'SQLITE_MAX_EXPR_DEPTH' değerini 0'a getirmenin yanı sıra, SQLIT_FTS3_MAX_EXPR_DEPTH değerini 12'den 24'e artırdım ve yeniden derledim, ancak hata mesajı hala "(maksimum derinlik 12)" diyor. – movingtype

cevap

1

, ": bir sütun adı belirtmek için kullanılır ve (standart sözdiziminde) - belirteçleri dışlamak için kullanılır, ifade sorguları için kullanılır. (Bkz. documentation.)

Özel karakterler zaten dizine eklenmemiş (bkz. tokenizers).

+0

Tamam, ama "düşkün" kelimesinden hemen sonra # 3 numaralı sorguyu kestirmesem bile hatayı aldığımı söylediğim bölümü okudun mu, üstelik sütun ve tırnak işareti eklenmedi mi? – movingtype

+0

Benim için çalışıyor. Bir [mcve] oluşturun. –

+0

Sizin için nasıl bir MCVE yapabildiğimi/yapmam gerektiğinden emin değilim, ancak önemli bir keşif yaptım: buna neden olan tire. "Uzun zamandan beri" işaretini kaldırdığımda sorun gider. Çalıştığım dizelerden herhangi birine kısa çizgi eklediğimde artık çalışmayacaklar ve aynı hataya neden olacaklar. – movingtype