результаты полнотекстового поиска, показывающие, где наиболее повторяющиеся слова
118 просмотра
1 ответ
Я вставил в свой веб-браузер, и он отлично работает, но он показывает мне грязные результаты, я хотел бы показать мне сверху, где над словом или словами в поиске повторяется.
Я посмотрел онлайн-уроки, но я не могу это сделать и всегда получаю беспорядок, не понимаю, почему.
Прямо сейчас у меня это так:
$sql="SELECT art,tit,tem,cred,info,que,ano,url
FROM contenido
WHERE MATCH (art,tit,tem,cred,info)
AGAINST ('" .$busqueda. "' IN BOOLEAN MODE)
ORDER BY id DESC";
В Интернете не так много информации об уточнении или оптимизации поиска Mysql FULLTEXT. Посмотрим, пройдут ли здесь эксперты, и мы все узнаем.
Как можно уточнить ваш поиск? Спасибо.
Автор: PlayerWet Источник Размещён: 24.10.2019 05:34Ответы (1)
1 плюс
Я думаю, проблема в том, что вы сортируете по id
.
Полный текст сортируется по счету совпадений, который он рассчитывает, показывая сначала более сильные совпадения. Когда вы подаете заявку ORDER BY id DESC
, вы теряете этот порядок сортировки по матчам.
Вы можете увидеть фактический результат в наборе результатов, если хотите:
SELECT art,tit,tem,cred,info,que,ano,url,
MATCH (art,tit,tem,cred,info)
AGAINST ('your term' IN BOOLEAN MODE) AS score
FROM contenido
WHERE MATCH (art,tit,tem,cred,info)
AGAINST ('your term' IN BOOLEAN MODE)
ORDER BY id DESC
Кстати: используйте подготовленные заявления для части «ваш термин» .
Если в строке поиска есть пробелы, но каждый термин имеет значение, вам нужно рассматривать их как отдельные части. Так что, если важно иметь ОБА "Мерседес" И "Бенц":
- Не:
AGAINST ('Mercedes Benz' IN BOOLEAN MODE)
<--- Это означает, что Mercedes или Benz - Делать:
AGAINST ('+Mercedes +Benz' IN BOOLEAN MODE)
Если вы хотите иметь что-то, что должно иметь первый член, но, необязательно, второй член (ранжирование выше, когда оба найдены):
AGAINST ('+Mercedes Benz' IN BOOLEAN MODE)
Вот длинный список комбинаций: https://dev.mysql.com/doc/refman/5.6/en/fulltext-boolean.html
И не забывайте, избавьтесь от ORDER BY id DESC
. Я думаю, что ваш окончательный запрос должен выглядеть примерно так для "Mercedes Benz"
SELECT art,tit,tem,cred,info,que,ano,url
FROM contenido
WHERE MATCH (art,tit,tem,cred,info)
AGAINST ('+Mercedes Benz' IN BOOLEAN MODE);
Да, у свободного текста в MySQL есть много причуд, но поэкспериментируйте, вы освоите его.
Автор: Ray Размещён: 08.02.2016 07:45Вопросы из категории :
- php Как вы отлаживаете PHP-скрипты?
- php Заставьте XAMPP / Apache обслуживать файл вне htdocs
- php Как включить файлы PHP, которые требуют абсолютного пути?
- php Скрипт входа со скрытыми кнопками
- php How can I find unused functions in a PHP project
- php Эффективное изменение размера JPEG изображения в PHP
- mysql Двоичные данные в MySQL
- mysql Насколько большой может быть база данных MySQL до того, как производительность начнет снижаться
- mysql Выбрать все столбцы, кроме одного в MySQL?
- mysql MySQL или PDO - каковы плюсы и минусы?
- mysql Как выбрать n-ую строку в таблице базы данных SQL?
- mysql MyISAM против InnoDB
- full-text-search Что такое полнотекстовый поиск против LIKE
- full-text-search Инструменты для поиска строк внутри файлов без индексации
- full-text-search Есть ли чистый Python Lucene?
- full-text-search Как я могу управлять релевантностью полнотекстового поиска MySQL, чтобы сделать одно поле более «ценным», чем другое?
- full-text-search Ошибка MySQL: «Столбец столбца» не может быть частью индекса FULLTEXT »
- full-text-search Искать "полное совпадение слов" в MySQL