2010-11-22 20 views
1

Tüm ülkeler, şehirler, mahalleler, köyler, posta kodları için otomatik tamamlanmış bir otomatik tamamlama alanı var. Bu, web sitem için oluşturduğum bir konum izleme özelliğinin bir parçası. Böylece bu listenin milyonlarca satırda olacağını düşünebilirsiniz. Tüm köyler ve posta kodları ile 20 milyondan fazla kişi bekliyor. Otomatik tamamlama işlemini iyi yapmak için memcached'i kullanacağım, bu yüzden bu listeyi almak için veritabanına her zaman vurmadık. Sitede birincil özellik olduğu için çok kullanılacaktır. Ancak soru şu: Bilgiyi çektiği kullanıcılara bakılmaksızın listenin yalnızca 1 instansı saklanır mı yoksa her biri için ayrı bir örneği mi saklamak gerekir? Yani eğer 20 milyon kişi aynı anda kullanıyorsa, otomatik tamamlama konumunu kullanan sadece 1 kişiden farklı mı olacak? Otomatik olarak tamamlanan bu konumun nasıl uygulanacağı konusunda başka fikirlere de açığım.Milyonlarca satır otomatik tamamlama alanı - uygulama fikirleri?

Ya da böyle bir şey yapabilir miyim: Bir kullanıcı arka planda oturum açtığımda, onları zaten bir liste gönderirim, böylece otomatik tam metin alanına ulaştıklarında bilgisayarları anında yüklemeye hazır olurlar?

cevap

1

NGram (veya EdgeNGram) belirtecilerini kullanarak Solr (veya Lucene'nin kendisi) 'ye bakın, büyük veri kümelerinde iyi otomatik tamamlama performansı elde edebilirsiniz.

+0

Bunun yerine Sphinx kullanabilir miyim? Akış şu şekildedir: Bunlar AJAX tabanlı alanlardır, bu yüzden onları AJAX'tan vurmam gerekiyor. Diğer bir şey ise, GIS'i yine de aramaya ihtiyacım var, bu yüzden birden fazla teknolojiyi desteklemek yerine tüm ihtiyaçlara yardımcı olabilecek tek bir teknolojiyi kullanmayı tercih ediyorum. – bone33

+0

Solr, Ajax sorguları için özel olarak tasarlanmıştır. Sfenks hakkında pek bir şey bilmiyorum ama Lucene/Solr ile karşılaştırılabilir gibi görünüyor. Sadece kendi sitelerine bakarken, indeksleme verimini ve ilişkisel veritabanlarıyla doğrudan bütünleşmeyi vurgulamaktadırlar; Öte yandan Lucene'nin özellikle metin analizi etrafında daha fazla özelliği var gibi görünüyor. Duyduğuma göre, arama performansı oldukça benzerdir (tabi ki özel kullanım durumuna oldukça bağlıdır). Aynı veri modelini uyguladıklarından, CBS yeteneklerinin de benzer olduğunu düşünürdüm. – Dmitri