Backend MYSQL bir web sitesinde arama Entegrasyonu

2 Cevap php

Ben bir yer arama var website her giriş vardı, bir şehir için, biz, Kolejler, Bölüm Mağazaları vb Okulları gibi kentteki tüm olası kategoriler için veri toplama ile başladı ve ayrı bir tabloda onların bilgilerini depolanan dışında kendi isim, adres ve telefon numarasından farklı ayrıntılar.

Biz bilgi bulmak için insanların sağlamak için web arama entegre vardı, bu yüzden biz aynı kategoride ve bu kategori için arama ise çok getirilecek tablo için kategoriler ve ilgili anahtar kelimeleri saklanan nerede bir dizin tablosu inşa. Daha sonra biz isim ve adres arama gibi tek bir yerde tüm tablolardan bu alanları içeren başka bir ana tablo ekleme işlevselliğini ekledi. Şimdi, benim şüphe şudur

  • Uygulama tasarımı yanlış olduğunu ve bizim gibi sorguları yazdım select * ustadan nerede bizim veritabanı serverside MySQL ve PHP beri her yerinden "% $ girdi"%, gibi isim, beni tasarımı geliştirmek için herhangi bir öneri var Sistemin?
  • İnsanlar kelimeleri bölme vb ilgisine göre onları sıralaması gibi daha fazla özellik istiyorsanız, bir veritabanı üzerinde arama çalışır geçerli hazır bir çerçeve yoktur.
  • Ben MySQL tam metin arama kullanarak denedim ve bana etkili görünüyor, bu yeterli mi?

Ben yanlış isem, ben Lucene ve Google Custom Search içine bakmak, onlar mevcut web sayfalarını tarama ve kendi endeksi kurarak bir dizin yapmaya çalışmaz vardı beni düzelt? Ben arama uygulamak zorunda olan bir mysql veritabanı tabloları bir koleksiyona sahip. I hangi seçenekler var?

2 Cevap

Noktaları gidermek için:

  1. % Giriş% kullanıyor very bad. Yani tam bir tablo her sorgu tarar neden olacaktır. Yük bir miktar altında veya hatta uzaktan büyük bir veri kümesi üzerinde DB sunucu şok olacaktır.

  2. Tek başına bir RDBMS bunun için iyi bir çözüm değildir. Sen arama için ayrı bir çözüm arayan tarafından doğru yerde arıyoruz. RDBMS ile iyi iletişim bir şey iyidir; bir RDBMS içinde çalışır bir şey ne gerek yapmayacağım.

  3. MySQL Tam Metin Arama çok temel anahtar kelime aramalarında, hiçbir şey için daha uygulanabilir olduğunu. Kullanışlılığı kapsamı son derece sınırlı - kaldıraç için son derece öngörülebilir kullanım modelini ihtiyaç dahili arama. Bu "arama" denir ama gerçekten çoğu insan bunu düşünmek yolu aramak değil. Google ve Bing beklediği arama sonuçlarının kalitesine göre, karşılaştırmak değildir. Word'de vs Not Defteri gibi - kelime "arama" bu anlamda, başka bir şeydir. Onlar hem de tip şeyler, ama bunun hakkında.

Bildiğim kadarıyla arama taşıma için ayrı sistemler olarak, Lucene çok iyi. Eğer aslında, çalışmak istiyorum ancak lucene çalışır. Sen indekslenebilen belgeleri eklemek için programlama onunla etkileşimde bulunabilirsiniz. Aynı şekilde, bir Google Appliance (Google Custom Search değil) böyle bir veri tabanından doğrudan veri olarak endeksli olmak istiyorum ne olursa olsun maruz doğrudan meta beslemeleri, verilebilir.

Sfenksin bir göz atın: http://www.sphinxsearch.com/

Kendi sitesinden başına:

Nasıl ki 10 + milyon satır tablo için tam metin arama uygulamak yük yetişmek ve ilgili kalmak mı? Sfenks bilmece bu tür iyidir.

Şu anda raylar toplum içinde bir sürü insan ile oldukça popüler, ve hepsi ne kadar müthiş hayran hakkında :)