Здравствуйте.
Столкнулся с тем, что пользователи пишут в строке поиска сайта, точно так же как в поисковой строке google, например - Танк т-34 ранний образца 1941 г. , в базе например есть только - т-34 образца 1941 года соответственно ничего не находится. Так вот как сделать так чтобы поиск был по т-34 и 1941.
Как сделать так, чтобы например сначала находилось по т-34, а потом фильтровалось по 1941?
Да используется sphinx.
подскажите как научить sphinx искать по определенным словам из поисковой фразы
Re: подскажите как научить sphinx искать по определенным словам из поисковой фразы
Как в самом sphinx прописать не подскажу, но суть запроса и поиска понятна.
Берем поисковую строку, разделяем её на массив слов
А дальше в поиске ищем по каждому слову из массива. Если сделать через "OR", то будет выдавать почти реальную картину поиска.
Берем поисковую строку, разделяем её на массив слов
Код: Выделить всё
$arr = explode(' ', $this->search);
Re: подскажите как научить sphinx искать по определенным словам из поисковой фразы
А вот этот момент, как анализировать поисковую строку от пользователя, вообще не объяснен в Sphinx.
Если например тупо вставить как ввели, без всякого экранирования, то:
- всякие вредители таких операторов туда накидают, что положат тебе весь сервер
- ограничение на кол-во слов
По умолчанию работает так что:
- должны присутствовать все слова, т.к. пробелы - это оператор AND
Видел что люди пришли к такому что разбивают на слова и ставят им всем оператор OR, плюс еще звездочки включают каждому слову с двух сторон, и это считают нормальным поиском. Типа те же результаты где встретится больше слов оно и отранжирует лучше.
Но насколько реально это то что человек задумывал когда искал фразу?
Есть оператор quorum, когда задаешь сколько слов из скольки должны присутствовать, может с ним попробовать?
Если например тупо вставить как ввели, без всякого экранирования, то:
- всякие вредители таких операторов туда накидают, что положат тебе весь сервер
- ограничение на кол-во слов
По умолчанию работает так что:
- должны присутствовать все слова, т.к. пробелы - это оператор AND
Видел что люди пришли к такому что разбивают на слова и ставят им всем оператор OR, плюс еще звездочки включают каждому слову с двух сторон, и это считают нормальным поиском. Типа те же результаты где встретится больше слов оно и отранжирует лучше.
Но насколько реально это то что человек задумывал когда искал фразу?
Есть оператор quorum, когда задаешь сколько слов из скольки должны присутствовать, может с ним попробовать?