Sfenks (veya başka bir üçüncü taraf) benim durumumda motoru iş arama mı ya da ben kendi oluşturmanız gerekir?

2 Cevap php

I am creating a search function of my classifieds on my website. Here is some of the criteria I need to meet:

  • 'Bmw 520' ararken bu iki kelime tam bu sırada döndürülen gelip sadece nerede eşleşir. Yalnızca 'BMW' veya sadece '520 'için maçları değil.

  • Ararken yukarıdaki gibi 'bmw 330ci' sonuçları İLE VE ci uzantısı OLMADAN, döndü, ancak edilecektir. Araçlarda uzantıları bir nr olarak vardır hepiniz biliyorum (i, ci, si, fi vb).

  • 'Bmw -330' '330 'olanlar olmadan tüm' bmw 'sonuçları dönecektir: Ben işaret, eski sonra sözcüğünü içeren tüm döner' dışlamak 'için' eksi işareti 'istiyorum. (Yerine eksi işareti bir DEĞİLDİR da ok)

  • 'é' gibi tüm özel karakter aksan bu durumda 'e' de, onların basit değerlere dönüştürülür.

  • arama dizesi tamamen görmezden kelimelerin listesi.

Ben Sphinx gerekir ya da ben bir php dosyasında bu yazmalıyım?

Sen benim ne önerirsiniz?

Teşekkürler

2 Cevap

Ben Sphinx sizin tüm kriterleri eşleştiğini düşünüyorum.

Ben Sphinx yapmak istediğiniz ne için oldukça iyi bir maç olduğunu düşünüyorum, ama bazı şeyler kendiliğinden olmayacak ...

  • Birlikte tam iki kelime üzerinde eşleştirmek için, genişletilmiş maç modunu kullanırken çift tırnak içinde ifade maç modu, veya grubu kelimeleri kullanmak gerekir ya.

  • Bu zor bir - belirli durumlar belirtmek sürece, ben '330 ci 've '330ci' hem de indeks 330ci sanmıyorum.

  • Sürece mantıksal veya genişletilmiş maç modlarını kullanarak konum olarak, daha sonra eksi işareti istediğiniz gibi çalışır.

  • 'Özel' karakterler standart ASCII dönüştürülebilir, ancak bu varsayılan olmaz. Sen your charset_table value ayarlamanız gerekir. Bu blog yazısı Sfenks (Sfenks için bir Ruby eklenti) Düşünme hedefleniyor, ancak ayar değeri sadece düz Sfenks geçirilir.

  • Eğer sorguda en az bir diğer kelime (: "-foo" Sfenks için başarısız olur, ancak "foo-bar" gayet iyi olduğunu) var eğer sadece bir sorgu başına temelinde belirli kelimeleri göz ardı edebilirsiniz. Bu to not index specific words seçebilirsiniz fazlalaştı.