Я хочу найти таблицу и получить наилучшее соответствие из таблицы , используя как не ПОЛНЫЙ ТЕКСТ SERCH.iS там какой-нибудь ват?Лучшее совпадение с использованием mysql like statement (естественное совпадение)
ответ
Это вы что искали?
SELECT username FROM users WHERE username LIKE '%value%';
Если вы просите полнотекстовой поиск с результатами упорядоченных по релевантности, то да есть решения .. но это не тривиально. Это более «корпоративные» решения на уровне:
Solr - http://lucene.apache.org/solr/
Solr является популярным, молниеносно открытым исходным кодом поисковой системы предприятия платформы от проекта Apache Lucene. Его основные функции включают в себя мощный полнотекстовый поиск, подсветку выделения, фасетный поиск, динамическую кластеризацию, интеграцию с базой данных и обработку документов (например, Word, PDF). Solr обладает высокой масштабируемостью, обеспечивая распределенный поиск и репликацию индекса, а также обеспечивает функции поиска и навигации многих крупнейших интернет-сайтов в мире.
Sphinx - http://sphinxsearch.com/
Как правило, это автономный поисковая система, предназначенная для обеспечения быстрой, размер эффективных и соответствующих полнотекстовый поиск функций в другие приложения. Sphinx был специально разработан, чтобы хорошо интегрироваться с базами данных SQL и скриптовыми языками. В настоящее время встроенные источники данных поддерживают выборку данных через прямое соединение с MySQL или PostgreSQL или с использованием механизма XML-канала (канал для индексатора в специальном формате на основе XML, который распознает Sphinx).
Невозможно сузить правильное решение, не зная больше о ваших системах и ограничениях.
Я не прошу полного текстового поиска – mahela
Вы попросили лучший матч, который подразумевает поиск релевантности. –
сделать это поэтапно:
a. первый взгляд для точного соответствия (SELECT * FROM бизнес WHERE имя = 'значение')
, если это не удается, то:
б. разделите строку поиска на слова, запустите запрос для каждого слова (добавьте результаты для каждого слова в массив, где ключ является идентификатором строки, а значение является релевантностью, поскольку каждое найденное слово увеличивает релевантность на 1, тогда вы можете просто сортировать ваш массив (т.е. большинство слов соответствует = высокая релевантность)
б очень inneficient и на самом деле вы должны использовать полный текст (или MySQL построен в полном тексте или сфинкса/Lucene и т.д., как указано выше)
Теперь мне приходится иметь дело с 100 000 строк, в будущем нужно иметь дело с более чем 10 миллионами. Возможно ли выполнить «orderby», используя ту же самую длинную длину и алпабский порядок? – mahela
вы не сможете эффективно использовать LIKE на 10 миллионов строк, почему вы не можете использовать полный текст? – mononym
мне это нужно вид вещи SELECT * FROM бизнеса WHERE имя LIKE 'Al%' заказ по DESC имя, длина (имя); Это не работает – mahela
как об этом ? SELECT * FROM 'business' WHERE name LIKE 'AI%' ORDER BY name DESC, length (name) DESC – ricecake5