"Aramayı yeniden tanımlamak" Nasıl

4 Cevap php

i want to add new feature to the search in my website. i'm using PHP and MYSQL. mysql database containing a table to the items that the user will search for, for each item there is a "keyword" column that's comma separated keywords "EXAMPLE: cat,dog,horse". after the user search in my website i want to get the words that are let me say "85%" similar to his search keyword, this is for redefine search. and for misspelling i want a service or something that provide if the keyword is correct or misspelled so i get some corrections and check if those exists in the database and then give those corrections to user to change his search keyword.

Ben burada bir çözüm için sormuyorum ... ama bir şekilde ya da başka bir beni yönlendirebilirsiniz eğer büyük olacak

Teşekkürler çocuklar

Şerefe

4 Cevap

Anahtar "% 85 benzer" senin fikrin olduğunu. İşte bazı fikirler:

Similar Words Table

Eğer anahtar kelimeleriniz için ortak imla hataları liste bir tablo tanımlayabilirsiniz. Daha sonra uygun değere ortak imla hataları haritasına veritabanında arama nasıl artırmak gerekir.

Similar Words Lookup

Eğer arama yaptığınızda, benzer kelimeleri oluşturmak ve hepsini aramak için bir kitaplığı kullanın. Sen arama göndermeden önce olası sözcük eşleşmeleri oluşturmak için yazım kütüphane her türlü kullanabilirsiniz. Ya Edit Distance algoritmasına dayalı kendi yazmak.

Only check if needed: Since you're using PHP, you may consider pspell. You can first call pspell_check to see if the word is spelled correctly. Then call pspell_suggest to get suggestions.

See this link for an example.

Use a Database Feature

MySQL, örneğin, bir SOUNDS_LIKE operatörü sahiptir. Sen WHERE keyword SOUNDS_LIKE 'kat' için arama ve (muhtemelen) alabilirsiniz cat. More info is on the documentation page, (ki İngilizce ve UTF-8 sadece gibi) bazı kısıtlamalar sizi uyarır.


Bu oldukça yaygın bir sorun gibi geliyor, bu yüzden belki de bu sorunun diğer daha kurallı çözümleri vardır. Belki orada kullanarak (veya veritabanı arabirim katmanı) konum diline özgü bir şey bu olabilir sizin için bu soyut.

İlk iki% 85 benzerliği bazı kavramını karşılamak için izin vermelidir. Ben üçüncü seçenek ne kadar iyi çalışacağını hiçbir fikrim yok, ama "Soundz kool."

Orada PHP () similar_text, ancak bu sorgu peşinde oluyor; Ayrıca MySQL tam metin arama kontrol edebilir.

Düzenle Mesafe Algoritma içine bakarak deneyin. Temelde iki giriş dizeleri için, dönüş değeri diğer içine bir dize dönüştürmek için gerekli düzenlemeler asgari sayıdır. Bu size iki dize yakın oldukları hakkında bir fikir verebilir.

Edit Distance

Apache Solr ama aynı zamanda tam metin arama yetenekleri ile değil, sadece sağlar açık kaynak kodlu bir arama platformu yerleşik birçok diğer powerful features arasında, puan ve oto-öneri sistemleri eşleşen.

Sitenize bilgi miktarı kadar önemli değilse ben en azından bunu kontrol etmek tavsiye ediyorum rağmen, bu seçenek, yersiz gelebilir.

App ve Solr arasındaki iletişimi bir standart DİNLENME arayüz üzerinden ele alınabilir. AFAIK Şu anda mevcut iki iyi Solr özel PHP kütüphaneler vardır:

Sunucusunu ayarlama zahmetli kısmı (yanı sıra ilginç bir) ayarlama ve ihtiyaçlarınıza en uygun SOLR optimize olmak, oldukça yalındır.