Как сделать эффективный поиск по сайту?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как сделать эффективный поиск по сайту?

Сообщение Anonymous »

Я пытаюсь реализовать поиск по сайту, который действительно будет полезен реальным людям, которые не вводят точные термины в строку поиска, иногда допускают орфографические ошибки и т. д.
Вот один пример. У меня есть список отелей в базе данных, и я хочу выполнить поиск по названию. Название одного из отелей - «Taj Wellington Mews Mumbai». Ожидаемый поисковый запрос для него — «тадж-мумбаи».
Вот что я пробовал:
  • При использовании LIKE поисковый запрос вообще не соответствует названию.
  • Я создал полнотекстовый индекс и попробовал Match() Against(), он возвращает любой отель, который содержит слова «тадж» или «мумбаи», например «Сент-Реджис Мумбаи».
  • Я разделил запрос на слова и удалил некоторые слова, добавив + перед каждое слово, чтобы база данных включала каждое слово.

Код: Выделить всё

$q = sanitize($_POST['search']);
$qParts = explode(' ', $q);
$fullTextQuery = '';
$filterWords = [
'the', 'in', 'of', 'from', 'and', 'a', 'an'
];
foreach ($qParts as $key) {
if(in_array(strtolower($key), $filterWords))
return;
$fullTextQuery .= '+'.$key.' ';
}
$searchQuery = "SELECT name, link FROM hotels WHERE MATCH(name) AGAINST ('$fullTextQuery' IN BOOLEAN MODE) AND status = 2";
Проблема в том, что теперь такой поисковый запрос «тадж мама» не работает. Чтобы получить результаты, пользователю придется ввести слово «мумбаи».
Будем признательны за любые предложения.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ite-search
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»