2010-01-10 22 views
11

iPhone'da bazı statik veriler üzerinde tam metin araması yapmanın en iyi yolu hakkında öneriler arıyorum.iPhone'da tam metin araması gerçekleştiriliyor mu?

Temel olarak, bir web sitesinin çevrimdışı sürümünü içeren yaklaşık 50 MB metin içeren bir uygulama var ve kullanıcıların terimleri aramasını istiyorum. Ben bir şekilde ("word", reference_to_file_containing_word) ya da bir şey, bir Core Data veya sadece sqlite koymak, "word" sütununu endeksli bir tablo inşa etmeliyim, o zaman arama tesisi arama terimleri için tabloyu aramak gerekir ve terimler veya bir şey için sonuç kümelerinin kesişimini ele alalım. Bu, insanların kelime öbekleri aramasına izin vermezdi ancak oldukça kolay ve muhtemelen çok yavaş olmazdı.

Bunun için mevcut SDK özelliklerini kullanmak istiyorum. Çekirdek Verileri mi yoksa sqlite mı kullanmalıyım?

Bunun nasıl yapılabileceği konusunda başka herhangi bir fikri var mı?

cevap

8

Belgede bulunan her sözcüğü kendi satırında bir veritabanına yerleştirmek ister misiniz? Bu, belgenin kendisinden daha fazla yer kaplayacak.

Sadece metin içinde arama yapmanızı öneririm; regex aslında oldukça hızlı. Aksi takdirde, Boyer-Moore'u oldukça kolay bir şekilde uygulayabilirsiniz.

[Düzenle] Sözcük dizini oluşturmayı tercih ederseniz, trie'u geçemezsiniz. Bir veritabanını kullanmaktan daha hızlı olur ve büyük olasılıkla belgelerin kendisinden daha az yer kaplar (veri tabanından farklı olarak)

+0

Teşekkürler! İlk önce tüm dosyaları regexps ile geçmeyi deneyeceğim, o zaman çok yavaşsa oradan başka şeyler deneyeceğim. Ağla ilgili programlama yaptıktan sonra, denemelere biraz aşinayım ancak bunları ağ öneklerinden ziyade sözcüklere uygulayabileceğimi düşünmüyordum. – Nimrod

2

Yanıt, SQLite için FTS3'tür. Google, iPhone üzerinde çalışmasını sağlayacak birçok eğitici var.

Ve iPhone üzerinde SQLite kullanmanın kolay yolu FMDB kullanıyor.

İlgili konular