Ne yapmalıyım, bir arama motoru kendim yaratmak veya başka birini kullanmak?

6 Cevap php

Ben bu ilanlar web sitesi var ve ben şimdi seri ilanlar bir arama fonksiyonu uygulamak için yollar arıyor.

Ben merak ediyorum, sen biliyorsun PHP oldukça güçlü bir arama motoru oluşturmak için herhangi bir öğretici var mı?

Ben üçüncü parti arama motorlarının içine baktım, ve onlar çok fazla hissediyor ...

PS: benim sunucuda yok tam metin desteği.

Teşekkürler

6 Cevap

Dürüst olmak gerekirse, ben ilk başta kafa karıştırıcı görünüyor olsa gibi, onunla vâkıf kez kullanmak çok basit, Zend_Lucene kullanarak öneriyoruz. Indeksleme yavaş olsa da, arama çok hızlı.

Eğer hızlı ve güçlü bir arama motoru yazmak istiyorsanız, öğretici bir uygulama bulmak için gidiş değildir, bazı araştırma yapıyor ve konuyla ilgili o yüzden kağıtları okuma iyi olurdu. Başka bir deyişle, araştırma ve sert bir sürü olmadan Zend lucene rakip PHP şey yazmak mümkün olacak değildir.

Belgeler çok çok iyi, ve ben bir hiçbiri Zend Framework proje bazlı Zend lucene uygulamak için başardı. Bu sadece yarım saat belgelerini okuma ve sindirerek geçirdi ve başka bir yarım saat sizin varsayımlar doğru olup olmadığını kontrol etmek testlerin hızlı bir dizi yazmayı gerektirir.

Bir araba kimliği ve marka ile bir belge oluşturmak için:

//if it hasn't been created, you need to use ::create rather than ::open
$index = Zend_Search_Lucene::open('/data/my-index');

$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::Text('Car', 'MyCar'));
$doc->addField(Zend_Search_Lucene_Field::Text('Make', 'BMW'));

$index->addDocument($doc);

Araba bulmak için:

$index = Zend_Search_Lucene::open('/data/my-index');
$result = $index->find('Car:MyCar');

foreach ( $result as $hit ){
    echo $hit->Make;
}

Olumsuz Zend_Lucene bu depolama konusunda herhangi bir garanti vermez, bir depolama motoru değildir, bu yüzden kullanarak, kayıtları saklamak için kullanabilirsiniz, ancak uygun bir veritabanı daha iyi bir seçenek olacaktır. Bu benim sadece arama indeksi ve senkronize veritabanı hem tutmak zorunda, karşılaşılan konulardan biridir. Ben buldum iyi yolu, sadece bir eklenti / veritabanı ve indeks hem kaldırmak adında bir sarıcı sınıf oluşturmak oldu.

Tipik bir açık kaynak zihniyet orada bir şey tekrar etmektir.

  • o zaman kazandırır
  • Eğer muhtemelen başka yeni teknoloji biri hakkında bilgi hakkında daha fazla biliyor olabilir
  • kendi katkıları, hata düzeltmeleri, geliştirmeleri geri ver

Tabii ki bu sizin ihtiyaçlarınızı karşılayacak bir proje için geçerlidir. Eğer düşünüyorsanız, mevcut malzeme siteniz için çok fazla, çok, yeni bir şey öğreneceksiniz, kendi yazmak gidin ...

Zaten Sfenks ve Lucene içine baktı ve onlar uygulamak için büyük / çok karmaşık hissediyorum olduğu göz önüne alındığında, neden interface with one of the existing Search Engines. Ayrıca neden writing a search engine is hard açıklayan bu yazıda ilginizi çekebilir

Sen Lucene bakmak gerekir, Zend oldukça iyi bir kitaplık yaptı;

Zend_Search_Lucene

Camran

Ben çok güçlü bir üçüncü taraf arama motorunu kullanabilirsiniz. Biraz pahalı ama çok güçlü.

Burada bir göz atın:

dtSearch

Performans daha fazla bellek / depolama daha önemli ise, o zaman Xapian öneriyoruz. Onun performansı (GB kullanıcısı açısından) devasa büyük veritabanları durumunda etkileyici. Her altında sosyal imleme sitesi delicious.com ve Hollandalı büyük PC ile ilgili forum Gathering of Tweakers kullanır ve ben yakın seçim, geliştirme ve arama motoru entegrasyonu yapılmış oldu. Bu ağır diğer arama motorlarını geride.