Текущая ситуация:PHP/SQL: Множественный поиск нечеткий ключевых слов на основе на подобии (Advanced SQL Search)
Я в настоящее время работает поиск по ключевым словам, используя несколько ключевых слов в PHP и SQL. В поле, к которому я применяю поиск, относится поле , которое является полем 250 VARCHAR.
Пользователь может ввести одно ключевое слово, например. «яблоко» или также несколько, например. «яблочный банановый жёлтый». Первый вариант тривиален. Для второго варианта мой текущий алгоритм работает следующим образом:
- Попробуйте найти элементы, которые соответствуют полной строке "apple banana yellow" в названии. Закажите результаты по индексу id.
- Если не найдено больше результатов, соответствующих полной цельной строке, или, если они не найдены, найдите все заголовки, содержащие «яблоко», «банан» или «желтый». Закажите результаты по индексу id.
Алгоритм очень простой, но достаточно забавный, работает довольно хорошо.
Что я ищу:
Однако сейчас я ищу осуществить умнее алгоритм поиска без необходимости полагаться на внешний заплатил скрипты, такие как услуги Amazon. Я ищу способ осуществить следующее:
- нечеткий поиск (я читал SOUNDEX или Левенштейн, которые могут реализовать это)
- умнее поиск ключевого слова (Не просто либо возвращать элементы, которые соответствуют всем словам или JUST A SINGLE WORD, но, возможно, еще 2 слова или 3 слова раньше)
- порядок по релевантности/сходству (заказ по сходству поиска по названию, а не только по индексу)
- (Бонус: может даже выполнить поиск точных строк, например, используя «» в google, чтобы точно найти слова между кавычками)
Что лучше всего начать с такого поиска? Я использую InnoDB для MySQL.
Какую систему SQL вы ударять? Вы используете MySQL, ORACLE? – Ray
@ Извините, я использую InnoDB для MySQL. Я отредактирую свой пост. –
Возможно, вас заинтересует http://sphinxsearch.com/, который может сидеть на вершине mysql – Mihai