Alaka ile PHP PDO arama motoru

1 Cevap php

Ben umutsuzca PHP, MySQL ve PDO ile nispeten kısa bir arama motoru oluşturmak için çalışıyorum. Ben kitap bir veritabanı var ve ben sorgu alanları ikiye karşı bir arama çalışıyorum. İşte ben bugüne kadar ne var:

"SELECT id, title, author, isbn, MATCH(title, isbn) AGAINST (:term) AS score FROM %sbooks WHERE MATCH(title, isbn) AGAINST (:term) AND is_active = 'y' ORDER BY score DESC LIMIT 0,25");
$sth->execute(array(':term'=>'+'.$keywords));

$ Anahtar kelimeler, arama alanına bir dize, yani 'kitabının bazı tür' gibi bir şey olabilir.

Ben BOOLE MODE koymak bile, ben herhangi bir kelime filtre ya da çok süslü bir şey yapmak istemiyorum, ama yukarıdaki sorgu sonuçlarının bir çok göz ardı edilir.

Ayrıca, veritabanında iki kitabı, 'kitap numarası 1' ve 'kitap sayısı 2' var. Ben kitap sayısını 2 'aramak, o hala' kitap sayısını 1 'yüksek atar. Asıl sorun, ancak aramaların bir sürü sadece hiçbir sonuç ile dönüyor olmasıdır: (

Zaten ben burada yanlış ne yapıyorum önermek yardımcı olabilir?

1 Cevap

Az üç harf tüm kelimeler göz ardı edilir. Bu nedenle, 1 ve Başlıkların sonunda 2 göz ardı edilir. Bu ayarı değiştirebilirsiniz:

http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

Bu MySQL açıdan bir kelime olmadığı gibi ISBN karşı eşleşen de hiçbir faydası yoktur.

Ben bunu iyi yapmak istiyorsanız, kendi arama motorunu icat gerektiğini düşünüyorum.