Источник: http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=35&LESSON_ID=2173 |
Знаете ли вы, что эффективность полнотекстового поиска можно значительно увеличить, если исключить из индекса слова встречающиеся очень часто? Например, если в каждом сообщении на форуме встречается слово "привет", то поиск по этому слову выдаст все сообщения, что не может удовлетворить инициатора такого запроса. Такие слова называются "СТОП" словами.
Практика показывает, что при использовании списка стоп-слов размер индекса уменьшается примерно на 10-15%, а возможный прирост скорости поиска бывает в десятки раз (20-50).
Задача по увеличению эффективности полнотекстового поиска решается в 3 этапа.
Чтобы определить стоп-слова, выполните следующее:
select ss.STEM,count(*) from b_search_content_stem cs inner join b_search_stem ss on ss.ID = cs.STEM group by STEM order by count(*) desc limit 100
select STEM,count(*) from b_search_content_stem group by STEM order by count(*) desc limit 100
В результате на странице будут отражены
100 самых популярных
терминов на сайте.
Есть и немного другой вариант получения списка стоп-слов:
<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); $query = $DB->Query("select ss.STEM,count(*) from b_search_content_stem cs inner join b_search_stem ss on ss.ID = cs.STEM group by STEM order by count(*) desc limit 100"); while($ar = $query->Fetch()) echo " ,",$ar["STEM"]; require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>
Так, вы быстро скопируете список самых популярных слов.
Для исключения слов из полнотекстового индекса и поисковых запросов добавьте в init.php через запятую слова, которые необходимо исключить:
define("STEMMING_STOP_RU", "ЗДЕСЬ, СПИСОК, СТОП, СЛОВ");
STEMMING_STOP_RU
, для второго - STEMMING_STOP_EN
.
После внесенных изменений выполните полную переиндексацию для обновления поискового индекса. Используйте форму Переиндексация сайта (Настройки > Поиск > Переиндексация).
Обратите внимание: |