Designfire.ru - блог о дизайне, обо мне, ну и немного о заработке в сети. Это не очередной сайт с кисточками для фотошопа. Это мой личный блог, в который я буду записывать все свои попытки научиться чему-то новому. Так что будем учиться вместе !

Что такое умный поиск? Какими критериями должен обладать?

  1. Учитывание особенностей языка (поиск слов в различных склонениях и падежах)
  2. Предложение дополнительных результатов (позволяет пользователю воспользоваться сайтом даже в том случае, если на нём нет требуемого контента)
  3. Предложение дополнительных запросов (уточняющих поиск)

Начнём с первого пункта. Основной проблемой типовых поисков является то, что слова ищут совсем не в том виде (не в той форме), в которой они существуют на сайте. Скажем, пользователь ищет «носки», в то время как на сайте есть только «носок».

Для того, чтобы точнее понять чего хочет посетитель, вам необходимо хранить базу сайта в несколько ином виде. Для этого, каждый текст сайта необходимо делеммизировать. Т.е. представить его в виде основ слов. К примеру, был текст «Вася решает математику», а стал (после делеммизации) — «Василий решать математика». Но на самом деле на сайте организовывается база лемм )лемма — основа слова), и текст представляется в виде цифр-ссылок на эту базу.

В дальнейшем запрос пользователя также делеммизируется, т.е. на входе мы могли иметь «Цветы оптом», а сайт будет искать леммы «Цветок опт».

Делеммизация может происходить двумя способами. Для первого способа вам необходимо разместить базу лемм. Можно взять базу Зализняка. Далее вы просто сравниваете слово с базой и получаете ссылку на нужную лемму. Однако такой процесс достаточно затратный по времени исполнения.

Второй способ проще — слово просто обрезается определённым образом (отрезаются приставки и окончания). И тут всё зависит от корректности предоставленных правил. Обычно, для такого метода нужно заготовить несколько сотен окончаний и исключений, но не смотря на это вы не получите совпадение слов «носок» и «носки» или же они оба будут обрезаны до «нос», что будет корелировать с обычным словом нос.

Второй способ менее затратный (база того же Зализняка будет занимать от 80бм до 1гб в вашей MySQL — с учётом всех ключей, ускоряющих поиск). Однако лучше всего использовать оба способа вместе. Если слово было найдено по базе — используется информация из базы, если слово найдено не было — производится его разборка до нужной леммы.

Ещё один момент, который не следует упускать при таком поиске — близость слов. Для этого рекомендуется сделать несколько уровней точности полученных результатов исходному запросу. Первый уровень будет показывать все найденные слова, даже если совпало только одно слово из всего запроса, следующий уровень будет показывать все результаты, где хотя бы 70% от запроса будут найдены, а самый строгий будет учитывать также и близость слов друг к другу.

Подобный механизм поиска реализован в CMS E5. Вам стоит лишь указать поля, которые будут индексироваться и добавить виджет поиска в нужное место. Остальное система сделает сама.

Перейдём к следующему пункту удобств — предложение дополнительных результатов.

Как можно этого добиться? Во-первых, вы можете сравнивать слова с остальным текстом (сам запрос) используя функции похожести слов (которых предостаточно в любом языке программирования). Благодаря этому, ваши пользователи увидят результат на свой запрос даже в том случае, если сделали его с опечаткой. Однако это позволит попадать в результаты поиска нежелательному мусору. К примеру, пользователь ищет запрос «асинхмометр БР-12», и если используется подобный алгоритм, то он увидит в результатах и БР-13 и БР-14 и т.д. По этому лучше в этом случае использовать алгоритм обнаружения опечаток или же отделять слова, в которых можно искать похожесть от остальных слов, которые похожи на марку или модель прибора.

Кроме этого, вы можете предлагать посетителям контент из поисковых систем (в случае, если на вашем сайте такого контента нет).

Третий пункт поисковых удобств основан на уточнении и дополнении поискового запроса. Если в результатах поиска слишком много страниц, предложите пользователю выбрать одну из категорий или дополнительное слово для запроса.

А для того, чтобы заинтересовать пользователя на продолжение поиска, предоставьте ему ряд запросов, которые искали пользователи после поиска аналогичного текущему запросу.

По материалам ДС Антона Баварского

Если вам интересно читать этот блог, подпишитесть на RSS feed
Сделайте это сейчас!

Ваш комментарий будет первым :)

Оставить комментарий


Ваше имя (обязательно)
Ваше e-mail (обязательно)
Ваш блог или сайт