Ben (soru uğruna, ~ 10k satır) bir ad> MiddleName> Soyadı hiyerarşi var diyelim. Bu "John> Mary-Anne> Eddy" veya "Eddy> John> Jacob" satır olabilir demektir. Nokta hiyerarşi (Ülke> Devlet> Şehir yapısı, diyelim ki, aksine) biraz mantıklı ve kullanıcı için oldukça yabancı olduğunu olmak.
Onun kadar yapılandırılmamış ve şaşkın, ben bir otomatik tamamlama giriş kutusu ile kullanıcıya sunmak istiyoruz. Onlar yazdıkça, olası alt dize eşleşmeleri aramak gerektiğini ve "kök" bir düzeyde arama kelimesi, o zaman bu seviyenin altına sonuçlarını kısıtlamak zaman.
"John" adlı bir sürü insan vardır çünkü Şimdi, onlar "John" yazarsanız, sadece gibi sonuçlar geri almak biraz mantıklı
- John> Allen> Alexander
- John> Allen> Burschawitz
- John> Allen ... 100 kez tekrarlayın ...
Onlar benzersiz satır "Jason> John> Smith" görmek asla çünkü.
("*", "Hey, bu varoldukları için aşağıda çok daha fazla satır" bir kullanıcıya sadece keyfi bir göstergesi olan) gibi Bunun yerine, bir şey almak gerekir:
- John> Allen> *
- Jason> John> Smith
- Mike> John> *
- Mary> Elena> Johnason
Onlar "John> Al" yazarsanız sonuçlar "John>" altında bir şey için sınırlı olacağını, ancak benzer şekilde yukarıdaki gruplanmış edilmelidir.
Ben açıklama açıktır umuyoruz. Gereksinimleri biraz gevşek. Sadece makul olanları bir kişinin ağacı üzerinden arama ve onlar sonra ne bulabilirsiniz böylece.
Şu anda, ben, üst üste arama terimi arar konumunu rakamlar, bazı substring'ing, grup bys ve yukarıdaki sonuçlar elde etmek için yıllardan tarafindan yapar bazı ilginç SQL var, ama onun yeterince iyi performans değil.
Ben (Oracle ile hariç) tipik bir lamba yığını bu sorunu çözmeye çalışıyorum. Onun barındırma paylaşılan, bu yüzden sunucu üzerinde tam denetime sahip yapmak değil. Veriler her birkaç hafta az miktarda değiştirir ve arama sonuçları bir zaman makul bir miktar (örneğin, arama indeksi söz konusu değildir güncelleştiren bir cron) için bayat kalabilirler.