Модуль "Простой поиск" (Simple Search)

Вс, 24/06/2012 - 12:10

Доброе время суток, уважаемое сообщество!

Не секрет, что стандартный поиск в Drupal 7 имеет много недостатков, например он не умеет искать по части слова. Если я хочу найти упоминание о постановлениях (постановление, постановления) и напишу постановлени, то стандартный поиск не найдет ничего! Если написать просто Пост, то стандартный поиск также не найдет ничего связанного с постановлениями. Исходя из этого и было принято решение написать свой модуль поиска. Его достоинства это:

  • Поиск по любой части слова с учетом окончаний
  • Поиск по заголовкам материалов
  • Поиск по содержимому материалов
  • Поиск по именам прикрепленных файлов
  • Наличие блока поиска

Из недостатков стоит отметить:

  • Отсутствие прав доступа (искать на сайте могут все)
  • Темизация только средствами CSS
  • Поиск НЕиндексируемый, ищет прямо в базе.
  • При использовании Simple Search нужно отключать стандартный модуль Search

UPD 21.09.2016
Гуру форума подсказали, что в эту тему частенько посылают новичков, которые по каким-то причинам не могут установить (осилить) apache solr, rustemmer и т.п., поэтому я решил немного допилить первую версию модуля. Добавил поиск с учетом окончаний и немного поправил вывод на странице поиска.

UPD 11.02.2017
Модуль больше не актуален, в связи с этим отличным постом.

2 Спасибо

Комментарии

Аватар пользователя igor701
5 лет 1 month назад igor701 #

без индекса будет медленно работать, особенно если используется SQL LIKE

0 Спасибо
Аватар пользователя schnauss
5 лет 1 month назад schnauss #

Спасибо огромное! То что искал

0 Спасибо
Аватар пользователя axel
5 лет 1 month назад axel #

Был такой модуль под старые версии друпала. По-моему годная штука для сайтов с небольшой БД (десятки-сотни материалов). В остальных случаях рекомендуется таки использовать модули поиска с построением поискового индекса.

0 Спасибо
Аватар пользователя itcrowd72
5 лет 1 month назад itcrowd72 #

В D6 нужно было поправить LIKE запрос прямо в search.module и он начинал искать по части слова. В D7 все координально поменяли. И да, модуль пригоден для небольших сайтов (у меня он работает на сайте Администрации района). Как я уже писал выше, это около 2000 материалов и около 1000 прикрепленных файлов.

0 Спасибо
Аватар пользователя Petro
5 лет 1 month назад Petro #

Модуль классный для небольших сайтов. Как раз такой искал. Только неплохо бы добавить в вывод результатов немного темизации. Задать стили для заголовков и выделений. Ну и поле поиска может быть добавить на страницу результатов. Но я думаю в процессе развития это все появится. А вообще то по двум полям может искать views кстати. Есть там такое поле в фильтрах combine

0 Спасибо
Аватар пользователя itcrowd72
5 лет 1 month назад itcrowd72 #
Petro написал:
Только неплохо бы добавить в вывод результатов немного темизации. Задать стили для заголовков и выделений. Ну и поле поиска может быть добавить на страницу результатов. Но я думаю в процессе развития это все появится.

Спасибо за поддержку. Код модуля открыт, присоединяйтесь к разработке :)

0 Спасибо
Аватар пользователя iNFerNo
5 лет 1 month назад iNFerNo #

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

0 Спасибо
Аватар пользователя NaZg
5 лет 1 month назад NaZg #
iNFerNo написал:
был бы такой поиск в замен фильтров или как альтернатива. созадешь вьюшку фильтры или поле поиска по конкретному полю и там уже ищешь...

Я тут Вам пачку запятых принёс, пользуйтесь, пожалуйста.
,,,,

0 Спасибо
Аватар пользователя iNFerNo
5 лет 1 month назад iNFerNo #

лучше пару кнопок для клавы =). за запятые спасибо. буду пользоваться. еще точек бы .

0 Спасибо
Аватар пользователя iNFerNo
5 лет 1 month назад iNFerNo #

использую solr и search api можно использовать заместо ядровых фильтров?

0 Спасибо
Аватар пользователя igor701
5 лет 1 month назад igor701 #

да нормально спроектировано для несложного модуля
понятно, что нормальный для большого кол-ва документов должен быть совершенно другой

просто индекс хорошо бы построить,
да и про оптимизацию sql like что-то подумать

0 Спасибо
Аватар пользователя itcrowd72
5 лет 1 month назад itcrowd72 #
SplasH написал:
Честно - всё. Он вообще неверно спроектирован.

Вы меня, конечно, извините, но я с таким же успехом могу сказать что: Drupal 7 вообще неверно спроектирован, Apache 2 вообще неверно спроектирован, GNU/Linux вообще неверно спроектирован и т.п. Давайте факты: что Вам не нравится и как это исправить.

0 Спасибо
Аватар пользователя graker
5 лет 1 month назад graker #

А главное, как уже заметили - не надо выдумывать велосипеды, надо просто поставить rustemmer.

0 Спасибо
Аватар пользователя itcrowd72
5 лет 1 month назад itcrowd72 #

Вот это уже интересней и по теме, спасибо.

0 Спасибо
Аватар пользователя kyky
5 лет 1 month назад kyky #

Правильно ли я понимаю, что в модуле выборка происходит лайками?
Стало быть, если нода имеет заголовок "Комментарии к постанавлению", то поиск по слову "постановление" не даст результатов?

0 Спасибо
Аватар пользователя Vovan91
5 лет 1 month назад Vovan91 #
kyky написал:
Правильно ли я понимаю, что в модуле выборка происходит лайками?
Стало быть, если нода имеет заголовок "Комментарии к постанавлению", то поиск по слову "постановление" не даст результатов?

Верно, для того что вы написали нужны словари, и всё это индексированным делается, тут индекса нет

ivnish, Используйте пользовательский поиск гугл, будет быстрей и искать лучше

0 Спасибо
Аватар пользователя itcrowd72
11 months 4 дня назад itcrowd72 #

Исправлено в новой версии

0 Спасибо
Аватар пользователя itcrowd72
5 лет 1 month назад itcrowd72 #
kyky написал:
Стало быть, если нода имеет заголовок "Комментарии к постанавлению", то поиск по слову "постановление" не даст результатов?

В таком случае надо писать в запрос "Комментарии к постанавлени", без окончания. Тогда найдется и постановление и постановлению и постановления

0 Спасибо
Аватар пользователя NaZg
5 лет 1 month назад NaZg #
Vovan91 написал:
ivnish, Используйте пользовательский поиск гугл, будет быстрей и искать лучше

не всегда спасает

0 Спасибо
Аватар пользователя kyky
5 лет 1 month назад kyky #
ivnish написал:
В таком случае надо писать в запрос "Комментарии к постанавлени", без окончания.

Мне жаль, но такой поиск никому не нужен. Как вы будете объяснять посетителям, что им нужно написать "постановлени" вместо "постановление"? Или, например, есть статья "О вскармливании котят", в этом случае по слову "котенок" ничего не будет найдено.
Уж лучше гуглопоиск.

0 Спасибо
Аватар пользователя itcrowd72
5 лет 1 month назад itcrowd72 #
kyky написал:
Мне жаль, но такой поиск никому не нужен. Как вы будете объяснять посетителям, что им нужно написать "постановлени" вместо "постановление"? Или, например, есть статья "О вскармливании котят", в этом случае по слову "котенок" ничего не будет найдено.
Уж лучше гуглопоиск.

Странно. А то, что стандартный друпаловский поиск вообще по части слова искать не умеет это нормально? :)

А что мешает написать в запросе КОТ и найти статью о котятах? Мне кажется Вы утрируете. Или ваши пользователи настолько суровы, что не догадаются искать по части слова без окончаний?)

0 Спасибо
Аватар пользователя itcrowd72
5 лет 1 month назад itcrowd72 #
kyky написал:
Уж лучше гуглопоиск.

И хотелось бы напомнить, что я никого не принуждаю этот модуль использовать. Понятно, что для крупных веб-порталов этот модуль не подходит, но для маленьких сайтов, блогов, домашних страничек самое то. У меня например нет желания, ради такой мелочи как поиск по части слова подключать к маленькому сайту rustemmer, поиск гугла, устанавливать на сервер Apache Solr и другие монструозные решения.

0 Спасибо
Аватар пользователя kyky
5 лет 1 month назад kyky #
ivnish написал:
А то, что стандартный друпаловский поиск вообще по части слова искать не умеет это нормально? :)

Это не нормально, поэтому я им тоже не пользуюсь. Нормальный поиск можно осуществить только через специализированные средства вроде Сфинкса. Вы пишете, что ваш поиск подходит для мелких блогов. Это потому, что он создает лишь имитацию поиска. На мелких сайтах достаточно рубрикатора или облака тегов. На крупных сайтах поиск лайками просто не будет работать.

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

0 Спасибо
Аватар пользователя kyky
5 лет 1 month назад kyky #
ivnish написал:
Или ваши пользователи настолько суровы, что не догадаются искать по части слова без окончаний?)

Вы когда гуглите, тоже пишете без окончаний?

0 Спасибо
Аватар пользователя Vovan91
5 лет 1 month назад Vovan91 #

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

0 Спасибо
Аватар пользователя NaZg
5 лет 1 month назад NaZg #
ivnish написал:
А что мешает написать в запросе КОТ и найти статью о котятах? Мне кажется Вы утрируете.

и получить в выдаче слова "КОТорый" и "сКОТ"? Отличное же решение!

ivnish написал:
Странно. А то, что стандартный друпаловский поиск вообще по части слова искать не умеет это нормально? :)

не нормально, согласен.

0 Спасибо
Аватар пользователя graker
5 лет 1 month назад graker #
NaZg написал:
и получить в выдаче слова "КОТорый" и "сКОТ"? Отличное же решение!

Ну слова типа "который" получить для такого короткого слова как "кот" - почти неизбежно. Но если выдача достаточно большая - сначала будут точные совпадения, а все остальное - потом.

0 Спасибо
Аватар пользователя kyky
5 лет 1 month назад kyky #
NaZg написал:
и получить в выдаче слова "КОТорый" и "сКОТ"?

Я же написал, что отпиливать только с конца. И делать это не во всех случаях.

0 Спасибо

Страницы