PHP PDO поисковая система с релевантностью - PullRequest
2 голосов
/ 10 февраля 2010

Я отчаянно пытаюсь создать относительно лаконичную поисковую систему с PHP, mySQL и PDO. У меня есть база данных книг, и я пытаюсь выполнить поиск по двум полям. Вот что у меня есть:

"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));

$ Keywords - это строка из поля поиска, поэтому может быть что-то вроде «Некоторая книга».

Я не хочу отфильтровывать какие-либо слова или делать что-то слишком причудливое, но приведенный выше запрос игнорирует множество результатов, даже когда я помещаю его в БУЛЕВЫЙ РЕЖИМ.

Кроме того, у меня есть две книги в базе данных, «книга № 1» и «книга № 2». Если я найду «книгу № 2», то она все равно получит «книгу № 1» выше. Однако основная проблема заключается в том, что многие запросы просто возвращаются без результатов: (

Может, в любом случае, подсказать, что я здесь делаю не так?

1 Ответ

2 голосов
/ 10 февраля 2010

Все слова, содержащие менее трех букв, игнорируются. Итак, 1 и 2 в конце заголовков игнорируются. Вы можете изменить эту настройку:

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

Сопоставление с ISBN также бесполезно, поскольку это не слово с точки зрения MySQL.

Я думаю, что вы должны изобрести свой собственный поисковик, если хотите сделать это хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...