2009-01-04 15 views
7

Birçok isimde bir veritabanı tablom var. Bu isimlere karşı "esnek maç" yapmak isterim. "Esnek eşleşme" nin uygun terim olup olmadığından emin değilim, ama şimdilik bununla devam edelim. "Fuzzy matching" da similardiscussions var, ancak fonetik eşleme ile gerçekten ilgilenmiyorum. Sıralı alt-eşleşmeyi aradığım şeyle ilgileniyorum.Flex Birçok Veritabanı Kaydı Eşleştirme (Quicksilver benzeri veya Launchy benzeri eşleme)

QuickSilver (OSX) veya Launchy (Windows) ile çalışmak isterim. İşte belirli bir arama dizesi için kibrit birkaç örnek:

mitassachusetts M Ben ait nstitute T echnology
ffoxF öfke tilki
osx ⇒ Mac OS X
msn s oft Corporation'ın ICROM

Benim nihai hedef olduğunu veri sunucusundan sürülen otomatik tamamlama metin alanıyla bir web sayfasına sahip olmaktır.

Eminim, istemci tarafında jQuery LiveUpdate ve/veya jQuery QuickSelect özelliklerini birleştirerek yeterli sonuçları alacağım.

Yardıma ihtiyacım olduğu yerde, sunucu tarafında esnek bir eşleşmeyi en iyi şekilde nasıl kullanacağınız büyük bir tabloya karşılık gelir. Quicksilver scoringalgorithm ve belki de bazı permütasyon indeks mantığını kullanarak kendi özel dizinimi oluşturma konusunda bazı fikirlerim var, ancak eğer uygunsa başka bir şey varsa tekerleği yeniden icat etmem.

Özet:Çok sayıda satır içeren bir veritabanı tablosuna karşı hızlı bir esnek eşleşme elde etmenin en iyi yolu nedir?

cevap

4

Bu doğrudan soruma cevap vermez, ama proje için ben üzerinde çalışıyorum, ben değil sadece ihtiyacını bu henüz için bir sunucu tarafı bileşeni yaptığını fark etti.

  • LiquidMetal: benim web uygulaması istemci tarafında kolaylaştırmak için, sadece iki yeni açık kaynak projeleri başlattı Bu Quicksilver benzeri puanlama algoritması kısaltmalar karşı puanları dizeleri olduğunu. Bir dizin oluştururken kullanışlıdır.
  • Flexselect: seçme kutularını esnek eşleştirme artımlı bulma denetimlerine dönüştüren jQuery eklentisi. Quicksilver'ın seçtiği kutuya vurulduğunu düşün.Canlı sonuçları filtrelemek ve sıralamak için LiquidMetal kullanır.
+0

+1. –

1

Tek yöntem LIKE eşleşmeleri yapmak olacaktır. Her karakterin arasına%, sonra dizeden önce ve sonra koyun ve buna göre arama yapın. Açıkçası bu, ms 'm ultimedia s ystems' gibi için başka şeyler olarak çeker, ancak muhtemelen de bu tarafından içeren başka tabloyla maçları 'önerilen' olduğunu eşleştirmek ve sıralama olabilir.

+0

Evet, biraz düşündüm ama büyük tablolar için kesinlikle iyi ölçeklenmiyor. Tam bir tablo taraması gerektirir. Ayrıca sonuçlara da puan vermiyor. Sıralı karakterler ve sözcüklerin baş harfleri, rastgele alt kümelerden daha yüksek olmalıdır. Flexselect için –