- Автор темы
- #1
Всем привет.
Есть задача сделать поиск по сайту.
Решил делать через индексы fulltext в таблице
все хорошо все понятно, если б не одно но
как написано тут
Для просмотра ссылки Войдиили Зарегистрируйся
Поиск по слову ``MySQL'' в предыдущем примере не приводит к каким-либо результатам, так как это слово присутствует более чем в половине строк. По существу, данное слово целесообразно трактовать как стоп-слово (т.е. слово с нулевой смысловой ценностью). Это наиболее приемлемое решение - запрос на естественном языке не должен возвращать каждую вторую строку из таблицы размером 1Гб.
Это можно устранить как я понял добавив в запрос аттрибут IN BOOLEAN MODE
но тогда пропадает релевантость поиска,
т.е результаты не возможно будет отсортировать по количеству вхождений поисковой фразы в поля по которым произоводится поиск.
Я если честно не могу вообще понять почему без IN BOOLEAN MODE он просто по слову MySQL ни чего не возвращает.
И возможно как то сделать так что он искал и выдавал результат и для тех слов которые будут встречаться более чем в половине статей на сайте и одновременно сохранить релевантоность.
Просто получается что тогда либо есть возможность использование релевантности, но простые одно словные запросы которые будут содержаться более чем в половине строк , будут возвращать 0 записей
Или же с использованием IN BOOLEAN MODE мы будем получать все результаты но без возможности сделать сортировку по релевантности.
Есть задача сделать поиск по сайту.
Решил делать через индексы fulltext в таблице
все хорошо все понятно, если б не одно но
как написано тут
Для просмотра ссылки Войди
Поиск по слову ``MySQL'' в предыдущем примере не приводит к каким-либо результатам, так как это слово присутствует более чем в половине строк. По существу, данное слово целесообразно трактовать как стоп-слово (т.е. слово с нулевой смысловой ценностью). Это наиболее приемлемое решение - запрос на естественном языке не должен возвращать каждую вторую строку из таблицы размером 1Гб.
Это можно устранить как я понял добавив в запрос аттрибут IN BOOLEAN MODE
- SELECT * FROM articles
- WHERE MATCH (title,body) AGAINST ('MySQL' IN BOOLEAN MODE);
но тогда пропадает релевантость поиска,
т.е результаты не возможно будет отсортировать по количеству вхождений поисковой фразы в поля по которым произоводится поиск.
Я если честно не могу вообще понять почему без IN BOOLEAN MODE он просто по слову MySQL ни чего не возвращает.
И возможно как то сделать так что он искал и выдавал результат и для тех слов которые будут встречаться более чем в половине статей на сайте и одновременно сохранить релевантоность.
Просто получается что тогда либо есть возможность использование релевантности, но простые одно словные запросы которые будут содержаться более чем в половине строк , будут возвращать 0 записей
Или же с использованием IN BOOLEAN MODE мы будем получать все результаты но без возможности сделать сортировку по релевантности.