We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 30562
    • 99 Posts
    AKots’у.

    coroico, как мне кааца wink , понимает, что ты довольно глубоко смотрел исходники AS.
    Поэтому, если ты не возражаешь,  он мог бы включить твои доработки "под себя", в версию 1.7.

    Единственное, нашему французскому сообщнику не под силу разобраться с русским языком. Если ты ещё разок обобщишь результат своих исследований (достаточно ссылок и коротких комментов), я бы попробовал помочь coroico врубиться в суть проблемы.
      • 785
      • 2,113 Posts
      Quote from: traveller at Jan 14, 2008, 01:03 PM

      Поэтому, если ты не возражаешь, он мог бы включить твои доработки "под себя", в версию 1.7.
      Как я понимаю его сообщение, он интересуется исправлениями, которые я СДЕЛАЮ для версии 1.7. А такие исправления я пока и не собирался делать, хотя кое-что могу и посмотреть.
      Основное, что видно уже сейчас – для кодировки UTF8 в preg_match и preg_replace нужно использовать модификатор /u. Это нужно исправить во многих местах.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 30562
        • 99 Posts
        Quote from: AKots at Jan 14, 2008, 01:41 PM

        Как я понимаю его сообщение, он интересуется исправлениями, которые я СДЕЛАЮ для версии 1.7. А такие исправления я пока и не собирался делать, хотя кое-что могу и посмотреть.
        Основное, что видно уже сейчас – для кодировки UTF8 в preg_match и preg_replace нужно использовать модификатор /u. Это нужно исправить во многих местах.
        Похоже, ты прав в своих предположениях.
        Для AS 1.7, вроде работает, следующая нарезка из твоих доработок по версии 1.6 (для кодировки UTF8):

        1. В сниппете AjaxSearch ищется строка:
        if (preg_match(’/’ . preg_quote($searchTerm) . ’/i’, $text)) {
        и после /I добавляется u, то есть в итоге должно получиться
        if (preg_match(’/’ . preg_quote($searchTerm) . ’/iu’, $text)) {

        2. Немного ниже ищется строка,начинающаяся на:
        $summary .= preg_replace( ’/’ . preg_quote( $searchTerm, ’/’ ) . ’/i’
        и в ней выполняется такая же операция, то есть добавляется u после i.

        3. Точно такие же две строки следует отредактировать в файле AjaxSearch.php.

        4. В плагине plugin.searchHighlight.tpl нужно найти строку:
        $pattern = ’/’ . preg_quote($word) . ’(?=[^>]*<)/i’;
        и добавить u после i, то есть получить в результате:
        $pattern = ’/’ . preg_quote($word) . ’(?=[^>]*<)/iu’;

        Кажется, не забыл ничего.
          • 18012
          • 7 Posts
          AKots Я думаю ему нужно сказать, что наработки есть. Но пока этим заниматься Ты не хочешь ? Я правильно понял ?

          To coroico. The problem was in that all param AjaxSearch is ok. But codepage in php.ini (in non English installations) was 1252 - not ! UTF-8.

          Is necessary to add in the documentation, record on necessities to expose in .htacces parameter AddDefaultCharset UTF-8.

          It will tell PHP about necessity to deduce the text in UTF-8, but not in win-1252
            • 785
            • 2,113 Posts
            Quote from: traveller at Jan 14, 2008, 02:14 PM

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

            Quote from: MaIron at Jan 14, 2008, 11:35 AM

            В .htacces нужно написать AddDefaultCharset UTF-8
            Что-то не нравится мне такое решение – наверняка можно без .htacces обойтись. Мне почему-то кажется, что команда mb_internal_encoding("UTF-8"); или что-то похожее может помочь. В любом случае, лично я .htacces точно не корректировал, и вряд ли на хостинге по умолчанию UTF-8 (я даже уверен, что не UTF-8).

            ---
            Итак, посмотрев новую версию ajaxSearch, я выявил некоторые проблемы и наметил следующие пути их решения:
            ---
            Проблемы и решения для версии ajaxSearch 1.7.

            1. Проблема - иногда поисковые запросы не подсвечиваются и не выводится фрагмент, в котором найдено слово (если не совпадает регистр).
            Решение (для utf8) – в файле snippet.ajaxSearch.inc.php ищется строка
            if (preg_match('/' . preg_quote($searchTerm) . '/i', $text)) {

            и после /I добавляется u, то есть в итоге должно получиться
            if (preg_match('/' . preg_quote($searchTerm) . '/iu', $text)) {

            Немного ниже ищется строка,начинающаяся на
            $summary .= preg_replace( '/' . preg_quote( $searchTerm, '/' ) . '/i'

            и в ней выполняется такая же операция, то есть добавляется u после i.
            Далее точно такие же две строки следует отредактировать в файле ajaxSearch.php.
            В плагине Search Highlighting нужно найти строку
            $pattern = '/' . preg_quote($word) . '(?=[^>]*<)/i';

            и добавить u после i, то есть получить в результате
            $pattern = '/' . preg_quote($word) . '(?=[^>]*<)/iu';

            После этих исправлений подсветка работает.
            По-хорошему нужно проверять, какая используется кодировка, и добавлять u только для utf8.

            2. Проблема – функция urlencode правильно кодирует строки, когда не используется Ajax, и не кодирует, когда он используется (получаются адреса с русскими буквами).
            Решение: В файле ajaxSearch.php найти выражения urlencode(htmlentities($searchString,ENT_QUOTES,$pgCharset)) (там они встречаются 2 раза) и заменить их на urlencode(urlencode(htmlentities($searchString,ENT_QUOTES,$pgCharset))).

            3. Проблема – если в найденной странице (в Ajax-результатах) имеется символ процента – %, весь Ajax-поиск рушится. То есть выдает ошибку распознавания URL (это, как мне кажется, проблема реализации Ajax в mootools, хотя могу и ошибаться).
            Решение (не слишком удачное) – % меняю на «проц.». При этом, если перейти на страницу поиска или на найденную страницу, там будут знаки %, слово «проц.» только в Ajax-результатах. Нормальное решение требует углубленного изучения проблемы.

            4. Проблема: Если ищется словосочетание Слово1 Слово2, и точно так оно имеется на странице, выводится сначала найденный фрагмент для первого слова, а потом практически такой же фрагмент для второго слова, что не совсем идеологически верно – фактически в результатах поиска два раза один фрагмент с разными подсвеченными словами.
            Решение: нужно менять логику, чтобы найденные в одном фрагменте слова больше не искались. Сходу такое не реализовать.

            Другие проблемы, имеющиеся в предыдущей версии, вроде бы решены, хотя на 100% я не уверен, так как основательно не тестировал.
              Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
              Статьи о MODx, регулярно новые публикации
              • 30562
              • 99 Posts
              Привет, AKots!

              Хорошенько же ты прошёлся по AS! Спасибо за труды.

              2 вопроса:

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

              2. К файлу языковой локализации претензии и исправления есть? Если нет, я вечерком отправлю его. Локализация в исходном файле, содержащемся в zip-архиве, и который упоминал coroico, ИМХО, тяжеловесна.
                • 30562
                • 99 Posts
                Вот все тут говорят об Ajax-поиске. А кто-нибудь может показать ресурс, где эта штука работает к месту и удобно встроена в интерфейс?
                Т.е. не игрушка, а удобный для посетителя инструмент. На пример в поставке MODx’а не ссылаться.

                Мне запомнилось одно место, где качественно прикручен Ajax-"живой поиск": http://forum.dklab.ru/ (левый верхний угол). И кто сходу скажет, что это всё phpBB2 ? wink С доработками, конечно...
                  • 19164
                  • 1,215 Posts
                  У Котерова используется его собственная библиотека для реализации аякса - JsHttpRequest (которой я и сам пользуюсь вот уже несколько лет), в которой есть встроенный механизм перекодировки из/в кодировок KOI8, win-1251 на уровне PHP при помощи собственных функций. Поэтому многие, возникающие, в других случаях проблемы с кодировкой, там неизвестны.
                    DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

                    Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

                    [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
                    • 785
                    • 2,113 Posts
                    Quote from: traveller at Jan 15, 2008, 05:58 AM

                    1. Как ты считаешь, стоит ли предложить coroico отображать в результатах поиска найденный документ не с начала, а с места, где появляется первый найденный контекст? Ну, не точно с позиции первого найденного слова, а минус несколько слов назад.
                    Так все именно так и отображается – вырезается фрагмент, в середине которого исковое слово, а в результатах выводится описание страницы и этот фрагмент. Проблема, как я писал, если несколько слов ищется.

                    Quote from: traveller at Jan 15, 2008, 05:58 AM

                    2. К файлу языковой локализации претензии и исправления есть? Если нет, я вечерком отправлю его. Локализация в исходном файле, содержащемся в zip-архиве, и который упоминал coroico, ИМХО, тяжеловесна.
                    Лично мне не нравится этот вариант, хотя, по большому счету, любой может поменять по своему вкусу. Я считаю, что подробное описание почти всегда лучше, чем сокращенное.

                    А конкретно по предложенному переводу:
                    $_lang[’as_boxText’] = ’Что искать...’; я вообще сделал ’’, так как эта надпись вылезала совсем не к месту в некоторых случаях и портила верстку. Подробнее не помню – давно это было.

                    По запросу "%s" найден %d результат. – мне кажется, лучше будет %d найдено по запросу "%s".

                    Кликните здесь, чтобы посмотреть все результаты. – однозначно очень плохо. Не надо использовать жаргон – в русском языке нет слова «кликните», зато есть распространенный термин «щелчок мыши». Кстати, «чтобы посмотреть все результаты» тоже не совсем грамотно. Можно «посмотреть на результаты» или «просмотреть результаты», а лучше «увидеть результаты». То есть вариант Щелкните здесь, чтобы увидеть все результаты поиска. лучше предлагаемого.

                    То есть в целом мне ближе тот файл, что уже взял coroico, чем описанный, хотя по большому счету безразлично.

                    Quote from: traveller at Jan 15, 2008, 06:34 AM

                    Вот все тут говорят об Ajax-поиске. А кто-нибудь может показать ресурс, где эта штука работает к месту и удобно встроена в интерфейс?
                    Т.е. не игрушка, а удобный для посетителя инструмент. На пример в поставке MODx’а не ссылаться.
                    Про то, что к месту, а что нет – вопрос философский. На моем сайте (ссылка на него слева) Ajax-поиск встроен в дизайн, и появляющиеся результаты ничему не мешают. Если бы этот поиск действительно был нужен кому-то, то, наверное, так лучше, чем использование отдельной страницы с результатами. Живой поиск я не стал включать, чтобы не нагружать почем зря сервер.
                      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                      Статьи о MODx, регулярно новые публикации
                      • 30562
                      • 99 Posts
                      Quote from: AKots at Jan 15, 2008, 07:12 AM

                      Так все именно так и отображается &#150; вырезается фрагмент, в середине которого исковое слово, а в результатах выводится описание страницы и этот фрагмент. Проблема, как я писал, если несколько слов ищется.
                      Зарапортовался. Был невнимателен. Имел в виду подсветку на отдельной странице (не Ajax).  Проскакивали в процессе тестирования непонятные куски с начала страницы без подсветки. Я и подумал, что это как раз тот случай, о котором писал.

                      Сейчас ещё поигрался с поиском. Здесь и дальше говорю о странице с результатами (не выпадающее меню Ajax).
                      Всё нормально. Действительно, по найденному документу вырезается кусок более-менее аккуратно. Правда, непонятен алгоритм. Иногда подсвеченные слова бывают в конце фрагмента. Иногда &#150; ближе к началу. 

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

                      В общем, надо разбираться более пристально.

                      Quote from: AKots at Jan 15, 2008, 07:12 AM

                      Лично мне не нравится этот вариант, хотя, по большому счету, любой может поменять по своему вкусу. Я считаю, что подробное описание почти всегда лучше, чем сокращенное.
                      &#133; То есть в целом мне ближе тот файл, что уже взял coroico, чем описанный, хотя по большому счету безразлично.
                      Ну и не будем ломать копий. Пусть останется, который был.

                      Моё же мнение возникло, когда я пощупав поиск в MODx&#146;е, представил себе посетителя ресурса, которому хочется сориентироваться быстро. Лаконичные фразы, простые слова, пусть и жаргон, а не многословие (часто калька) делают сайт для посетителя более дружественным.
                      Но это всё &#150; за рамками самого поиска. На вкус и цвет&#133;

                      Чем присутствующих привлекает MODx, так как раз тем, что каждый легко заточит свой ресурс, как сочтёт нужным.

                      Quote from: AKots at Jan 15, 2008, 07:12 AM

                      Про то, что к месту, а что нет &#150; вопрос философский&#133;
                      Хочется пополнее составить мнение о достоинствах и удачных вариантах  применения Ajax-поиска у разных разработчиков. Моё нутро также протестует против живого поиска и против выскакивающего окна с результатами. Пугает оно меня. Ну ничего не могу с собой поделать. smiley