Прилично так доработал модуль, поэтому решил сменить номер версии на 1.1.
Если кратко, то основные нововведения:
1) Много чего вынес в конфиг для более гибкой настройки модуля — поддерживаемые символы народов мира, параметры подсветки и т.д.
2) Сделал формирование сниппетов для вывода результатов и уложил в одинаковый вид вывод топиков и комментов
3) Сделал возможность временно отключать модуль. Например, если надумали поставить Сфинкса или еще какую-то искалку, но сразу не «выходит каменный цветок», и надо периодически отключать MySearch для проверки, а потом опять включать. Щас это можно делать через изменение одного параметра в конфиге.
И много чего еще по мелочи, убив кучу времени на бодание с UTF-8.
Модуль уже выложил, будет доступен после модерации по прежнему адресу на livestreet.ru/addons/74/
UPD Версия 1.1.22 — пагинация результатов запроса UPD Версия 1.1.23 — удаление лишних тегов из сниппета, показываются только теги 'a', 'img', 'object', 'param', 'embed', т.к. по ним идет поиск UPD Версия 1.1.24 — добавлена опция исключения всех тегов из поиска UPD Версия 1.1.26 — Исправлен баг, считающий в результатах выдачи неопубликованные топики и удаленные комменты UPD Версия 1.1.28 — Если искомые слова встречаются рядом, то они попадут в один фрагмент сниппета. Изменено значение параметра MYSEARCH_SKIP_ALL_TAGS — если он задан, то поиск в тегах все равно идет, но сами теги в результатах поиска не показываются UPD Версия 1.1.29 — Добавлены элементы релевантности UPD Версия 1.1.34 — багфикс ( livestreet.ru/blog/3552.html )
82 комментария
ну значит, так.
т.к. я «профукал», что некоторые файлы должны быть в /new/actions/ActionMysearch. то сейчас их отправил туда.
получается так:
при пустой строке — найден 1 топик, но не показывается.
ввожу 1 символ — Длина запроса не может быть меньше 3, Поиск не дал результатов.
ввожу слово, которое точно есть выводил «найден 1 топик» и ниже пустой экран.
Решил обновить. Скачал и поставил последнюю версию. Выставил false
Пустой запрос — пишет в результатах поиска «Топики 1», хотя нет ничего.
Ввожу слово, которое точно есть в тексте — найдено топиков 3 (но показывает только 2). При чем по остальным запросам все верно :)
Да и еще вот что — он я так понимаю показывает теги. Например, в результатах выводится
Теперь вот — ввожу слово которое есть и в топике и в коменте — Топики (3), Комментарии (ничего не написано), но хотя если перейти по этой кнопочке «Комментарии», то он покажет найденный комент.
1) Топики и комменты — в отличие от поиска Сфинксом тут поиск идет раздельно. Сделано специально для уменьшения нагрузки.
2) Теги — да показывает. Ибо:
а) поиск идет не только по тексту, но по атрибутам тегов (типа title, alt)
б) результат поиска по умолчанию — это сниппет, и если найденая фраза внутри тега, то ее тоже надо показать.
Вот только не должно быть ни strong, ни b, ни прочих бестолковых (с точки зрения поиска) тегов. Понадеялся в этом плане на Jevix и поэтому особо тщательно не тестировал. Но, видимо, зря. Буду проверять.
Странно, в результатах поиска некоторые результаты отображаются нормально (со всем оформлением, тегами, элементами), а некоторые без оформления (теги и прочий хлам на виду). В чем может быть дело?
А дай, где глянуть можно. Вообще-то, без оформления должны результаты поиска показываться. Нужен пример, чтобы я увидел вживую результаты с оформлением. И про 46 пунктов тоже.
Пример прям щас не могу, чуть позже, т.к. на рабочей версии все, и он «перебивает» мой нынешний поисковик.
Все работает, я просто сглупил. Единственное что не пашет — постраничность. Пробую разобраться…
Хочу увидеть своими глазами, как выводит список то 7, то 10, хотя найдено 163. Если найдено больше 10, то выводить должно ровно 10 сниппетов — 1-ю страницу результатов. Используется параметр BLOG_TOPIC_PER_PAGE из конфига ЛС. Хотя, наверное, стоит специальный параметр завести в конфиге самого поиска.
Теперь о самой проблеме — сейчас выложена версия 1.1.22, где должна быть нормальная разбивка на страницы. Проверяйте и отписывайтесь о результатах.
ЗЫ Обновление ставится просто накатом поверх имеющейся версии (это на случай, если инсталлятор не сработает).
<img src="http://*****/uploads/images/4/367770d1d3.jpg" title="картина Orange"/> Посмотреть ее можно…
…> <img src="http://*****/uploads/images/4/52db9b33d7.jpg" title="картина Orange"/> Существует много вариантов этой картины — <strong>картина Orange…
вот такое может выдавать пачками по поисковому слову (допустим Orange), если в оно присутствует в title, или в самой ссылке :(
а что делать с 'a', 'img'?
можно ли предусмотреть отключение их из поиска, допустим где-нибудь в конфиге? мусорит результаты ужасно:
<img src="http://*****/uploads/images/4/367770d1d3.jpg" title="картина Orange"/> Посмотреть ее можно…
…> <img src="http://*****/uploads/images/4/52db9b33d7.jpg" title="картина Orange"/> Существует много вариантов этой картины — <strong>картина Orange…
<img src="http://*****/uploads/images/4/367770d1d3.jpg" title="картина Orange"/> Посмотреть ее можно…
…> <img src="http://*****/uploads/images/4/52db9b33d7.jpg" title="картина Orange"/> Существует много вариантов этой картины — <strong>картина Orange…
<img src="http://*****/uploads/images/4/367770d1d3.jpg" title="картина Orange"/> Посмотреть ее можно…
…> <img src="http://*****/uploads/images/4/52db9b33d7.jpg" title="картина Orange"/> Существует много вариантов этой картины — <strong>картина Orange…
Хм, попробую, но не уверен, что получится. Ведь поиск по базе идет, а там все в исходном виде хранится. Поиск делается встроенным Regexp-ом мускула, а он какой-то кастрированный. Поэтому не знаю, смогу ли заставить его искать только вне тегов.
поставил, первые впечатления- в title (img) по поисковому запросу не находит, значит д.б. ок
1. выставил в
define('MYSEARCH_STRICT', false);
т.к. в true при запросе состоящем из трех слов(допустим «картина Orange Green») выдавало в результатах — по первому слову (т.е.везде где встречалось слово картина), естественно это неудобно -человек ищет допустим это словосочетание, а «картина» его не интересует в 200 найденных вариантах.
Сложилось мнение что, у тебя true и false попутано, т.к. после
define('MYSEARCH_STRICT', false);
стало находить то что нужно.
2. если запрос из 1 слова, то подсвечивает. Если 2 и более-подсветки нет, и выдает в результатах поиска кусок текста, символов 1000 или более
3. опять всплыло: найден 1 комментарий, а сам комментарий не выводится
(допустим «картина Orange Green») выдавало в результатах — по первому слову (т.е.везде где встречалось слово картина), естественно это неудобно -человек ищет допустим это словосочетание, а «картина» его не интересует в 200 найденных вариантах.
так сначала выводятся топики в которых встречаются все эти слова, а потом те в которых эти слова по одному.
и к тому же я попробовал в false ввести запрос типа:
как это
у меня выводит все топики раскрытыми. у тебя есть такая проблема?
ты не понял, я скопировал фразу из 3 слов «картина Orange Green», в поиске выдало кучу мусора со словом картина, если человеку нужно найти Orange Green — он фиг его когда найдет в 200 результатах
находит «25», стоит разбивка на страницы( получается у нас 3 (выдавать должно по 10)) — но ничего не показывает и так по любому запросу (только в комментариях)
У меня всё ищет и находит:) Правда не пишет сколько коментов найдено, но если перейти по кнопке Комментарии (в результатах поиска), то там показаны коменты с запросом.
Если работает не так, то нужен конкретный пример: вот на этом сайте с такими-то настройками задаем поиск такой-то. Должны получить такие результаты, а получаем вот эдакие. Гарантий давать не буду, но, во всяком случае, попробую разобраться, в чем проблемы.
Проблема, когда показывалось одно число результатов, а выводилось сниппетов меньше, решена в версии 1.1.26 — черновики и удаленные комментарии хоть не выводились, но считались.
Установил, поиск работает. Но вверху выскакивает следующее:
Notice: unserialize() [function.unserialize]: Argument is not a string in /home/httpd/vhosts/oneloko.ru/httpdocs/classes/modules/sys_cache/Cache.class.php on line 105
Notice: unserialize() [function.unserialize]: Argument is not a string in /home/httpd/vhosts/oneloko.ru/httpdocs/classes/modules/sys_cache/Cache.class.php on line 105
Notice: unserialize() [function.unserialize]: Argument is not a string in /home/httpd/vhosts/oneloko.ru/httpdocs/classes/modules/sys_cache/Cache.class.php on line 105
ты вообще понимаешь, что такое поиск? ты хоть раз в жизни хотя бы в гугле или яндексе искал? здесь все так же — в поле поиска набираешь слово, которое хочешь найти, и жмешь клавишу «ентер».
../search/ открывается даже без установки мода.
У тебя скорее всего просто старая версия LS.
Если ты говорил, что шаблон аля habr, то мод это скорее всего работать там и не будет.
Модуль разрабатывался и тестировался для версии ЛС 0.3.1
Под более ранними версиями даже и не пробовался, и не вижу смысла заморачиваться, можно ли его как-то адаптировать.
Для начала — обновить модуль вручную. В ридми описано, как это сделать. Если все поставлено корректно, то «перехватчик» не может конфликтовать с предыдущей версией по определению — потому что предыдущей версии не остается. А если какие-то скрипты модуля от одной версии, какие-то — от другой, то тут что угодно может быть.
Все отлично, заработало.
Надо поменял в поле поиска (то что в шапке сайта на всех страницах) с «name='searchfor'» на «name='q'»
Это если кто-то так же как я тупить будет :)
Автору спасибо, отличная вещь получилась.
Действительно надо изменить «searchfor» на «q», сделать это нужно в header_nav.tpl для шаблона «new». При этом, как это было в моем случае, нужно раскоментировать <form.....>… где <input… name=«q» />..... А старый блок form где name=«searchfor» удалить или закоментировать.
У меня та же ошибка, стоит q в header_nav.tpl, при любом запросе выводит «Длина запроса не может быть меньше 3 и больше 255 знаков», при вводе адреса просто site.ru/search выводит эту же ошибку.
Началось все после переноса на новый хостинг, до этого все работало, то есть вряд ли упущено, что то в коде. пробовал дать права на папки /classes/modules/ и /config/ 777 не помогло.
нашел причину…
[message] => User admin already has more than 'max_user_connections' active connections
[query] => mysql_connect()
вот, что ответили хостеры:
Yunus: [12:44:52 PM] hi, i'm getting error [message] => User admin already has more than 'max_user_connections' active connections [query] => mysql_connect(), how can i increase number of connections to mysql BD ??
Shawn: [12:44:58 PM] Hello
[12:45:12 PM] Unfortunately you cannot increase the max connections
[12:45:34 PM] You will need to set your script to close the connection after the db has been queried
82 комментария
т.к. я «профукал», что некоторые файлы должны быть в /new/actions/ActionMysearch. то сейчас их отправил туда.
получается так:
при пустой строке — найден 1 топик, но не показывается.
ввожу 1 символ — Длина запроса не может быть меньше 3, Поиск не дал результатов.
ввожу слово, которое точно есть выводил «найден 1 топик» и ниже пустой экран.
Решил обновить. Скачал и поставил последнюю версию. Выставил false
Пустой запрос — пишет в результатах поиска «Топики 1», хотя нет ничего.
Ввожу слово, которое точно есть в тексте — найдено топиков 3 (но показывает только 2). При чем по остальным запросам все верно :)
Да и еще вот что — он я так понимаю показывает теги. Например, в результатах выводится И даже
так и должно быть?
Теперь вот — ввожу слово которое есть и в топике и в коменте — Топики (3), Комментарии (ничего не написано), но хотя если перейти по этой кнопочке «Комментарии», то он покажет найденный комент.
«Результаты поиска: Поиск» :)
Присоединюсь к вопросу про теги в результате поиска.
2) Теги — да показывает. Ибо:
а) поиск идет не только по тексту, но по атрибутам тегов (типа title, alt)
б) результат поиска по умолчанию — это сниппет, и если найденая фраза внутри тега, то ее тоже надо показать.
Вот только не должно быть ни strong, ни b, ни прочих бестолковых (с точки зрения поиска) тегов. Понадеялся в этом плане на Jevix и поэтому особо тщательно не тестировал. Но, видимо, зря. Буду проверять.
С предыдущими версиями был полный порядок (в плане автоматической установки).
Все работает, я просто сглупил. Единственное что не пашет — постраничность. Пробую разобраться…
у меня таже картина, пишет нашел 50, отображает только по 7, и в топиках и комментариях.
Постраничность тоже не работает. Хотя не читал что должна работать…
выдает — найдено 50, а показывает 10.
у меня выдало:
найдено 163, а показывает тоже 10 :)
на другие любые запросы точно такая же картина — находит много, а список из 7,9,10…
Теперь о самой проблеме — сейчас выложена версия 1.1.22, где должна быть нормальная разбивка на страницы. Проверяйте и отписывайтесь о результатах.
ЗЫ Обновление ставится просто накатом поверх имеющейся версии (это на случай, если инсталлятор не сработает).
все ок.
вот такое может выдавать пачками по поисковому слову (допустим Orange), если в оно присутствует в title, или в самой ссылке :(
наверное нужно в ссылках и изображениях..,
а так у меня все страницы поиска в «техническом мусоре» :(
можно ли предусмотреть отключение их из поиска, допустим где-нибудь в конфиге? мусорит результаты ужасно:
В конфиге строку
заменяешь на
Отпишись, каков будет результат
1. выставил в
т.к. в true при запросе состоящем из трех слов(допустим «картина Orange Green») выдавало в результатах — по первому слову (т.е.везде где встречалось слово картина), естественно это неудобно -человек ищет допустим это словосочетание, а «картина» его не интересует в 200 найденных вариантах.
Сложилось мнение что, у тебя true и false попутано, т.к. после
стало находить то что нужно.
2. если запрос из 1 слова, то подсвечивает. Если 2 и более-подсветки нет, и выдает в результатах поиска кусок текста, символов 1000 или более
3. опять всплыло: найден 1 комментарий, а сам комментарий не выводится
так сначала выводятся топики в которых встречаются все эти слова, а потом те в которых эти слова по одному.
и к тому же я попробовал в false ввести запрос типа:
у меня выводит все топики раскрытыми. у тебя есть такая проблема?
с false находит именно то что нужно
выходит, да, раскрытые.
— посмотри внимательно, с false поиск получается строгий, а true -нет. Ну покрайней мере у меня так
находит «25», стоит разбивка на страницы( получается у нас 3 (выдавать должно по 10)) — но ничего не показывает и так по любому запросу (только в комментариях)
поставил 24 и изменил на false — выдача по комментам исчезла, хотя количество найденного показывает
Если работает не так, то нужен конкретный пример: вот на этом сайте с такими-то настройками задаем поиск такой-то. Должны получить такие результаты, а получаем вот эдакие. Гарантий давать не буду, но, во всяком случае, попробую разобраться, в чем проблемы.
Проблема, когда показывалось одно число результатов, а выводилось сниппетов меньше, решена в версии 1.1.26 — черновики и удаленные комментарии хоть не выводились, но считались.
dred выше еще писал:
Notice: unserialize() [function.unserialize]: Argument is not a string in /home/httpd/vhosts/oneloko.ru/httpdocs/classes/modules/sys_cache/Cache.class.php on line 105
Notice: unserialize() [function.unserialize]: Argument is not a string in /home/httpd/vhosts/oneloko.ru/httpdocs/classes/modules/sys_cache/Cache.class.php on line 105
Notice: unserialize() [function.unserialize]: Argument is not a string in /home/httpd/vhosts/oneloko.ru/httpdocs/classes/modules/sys_cache/Cache.class.php on line 105
Как бороться?
вот всё что в шапке про поиске:
задавать поиск на сайте пробовал?
название-сайта/search/
Акакая версия LS?
Форму поиска(если нету) можно выдернуть из шаблона new к примеру.
сайт на локальном сервере.
в define('LS_VERSION','тут версия');
единсвенное про define это
У тебя скорее всего просто старая версия LS.
Если ты говорил, что шаблон аля habr, то мод это скорее всего работать там и не будет.
Под более ранними версиями даже и не пробовался, и не вижу смысла заморачиваться, можно ли его как-то адаптировать.
Запрос вида:
Может быть так, что «перехватчик» с предыдущей версией поиска конфликтует? Как лучше поступить?
Ок, попробуй пройтись по всем файлам еще раз. Спасибо.
Надо поменял в поле поиска (то что в шапке сайта на всех страницах) с «name='searchfor'» на «name='q'»
Это если кто-то так же как я тупить будет :)
Автору спасибо, отличная вещь получилась.
Началось все после переноса на новый хостинг, до этого все работало, то есть вряд ли упущено, что то в коде. пробовал дать права на папки /classes/modules/ и /config/ 777 не помогло.
Подскажите пожалуйста в какую сторону копать.
[message] => User admin already has more than 'max_user_connections' active connections
[query] => mysql_connect()
вот, что ответили хостеры:
Yunus: [12:44:52 PM] hi, i'm getting error [message] => User admin already has more than 'max_user_connections' active connections [query] => mysql_connect(), how can i increase number of connections to mysql BD ??
Shawn: [12:44:58 PM] Hello
[12:45:12 PM] Unfortunately you cannot increase the max connections
[12:45:34 PM] You will need to set your script to close the connection after the db has been queried
Выход только поменять хостера??
2) Распаковываем скаченный арзив
3) Читаем файл readme.txt
Или ты где-то в другом месте этот модуль берешь?