2012-08-01 15 views
7

MATCH kullanarak dize aramayı içerir iOS uygulamasında SQLite FTS uzantısını kullanıyorum. İyi performans gösteriyor ancak sorun sadece dize önekleriyle eşleşmesidir (veya anahtar kelime arama ile başlar).(son eki) ile biter ve SQLite FTS

yani

SEÇ tabloismi WHERE columnname MAÇ 'searchterm *'

çalışır ancak tabloismi GELEN

SEÇ NEREDE columnname MAÇ '* searchterm'

veya

SEÇ GELEN tabilename WHERE sütun adı MATCH '* searchterm *'

yapmıyor. Bu ya da herhangi bir şekilde "LIKE '% searchterm%'" sorgusuna benzer bir sorgu oluşturmak için FTS kullanmak için herhangi bir geçici çözüm var mı.

DÜZENLEME: ters sırada tüm metnini saklanması ve ters ipte bir önek araması, Retterdesdialogs işaret ettiği gibi

benim orijinal soruyu oldu/eki ​​arama problemi olan uçları için olası bir çözüm, ancak 'içerir' arama için işe yaramaz. Soruyu buna göre güncelledim.

+0

Çoğu kullanıcı, çoğunlukla Google'dan kaynaklandığını söyleyebilirim. Umarım SQLite adamları FTS'de alt-string desteği üzerinde çalışıyorlar. – Diederik

cevap

1

, ben alt dize nedeniyle eki sorguları eksikliği maçları desteklemediği tam sebeple FTS arama uzak shied var.

Çözümler karmaşık görünüyor.

MATCH'den daha az performans gösterirken, LIKE sorgularını kullanmaya başvurdum.

2

Eğer arama yapabilmek istiyorum koşulların tümünü eklerini saklamak gerekir, onun için sorgular bulunmaktadır işe almak için . Bu, veritabanını gerçekten büyük yapmakla ilgili dezavantaja sahiptir, ancak verileri sıkıştırarak önlenebilir. Benim iOS ve Android uygulamalarında

SQLite FTS contains and suffix matches