Как сделать поиск в Текстпаттерн регистронезависимым

Поиск в ТХП изначально работает весьма удобно и вывода результатов поиска легко поддается настройке. Однако почти все заметили – поиск регистрозависим для русского языка. Давайте исправим это!

Поиск в ТХП изначально работает весьма удобно и вывода результатов поиска легко поддается настройке. Однако почти все заметили – поиск регистрозависим для русского языка (если быть точнее, то для всех multybytes символов).

Как заставить Textpattern не учитывать регистр при поиске на русском языке?

  1. Открываем файл publish.php в районе строчки номер 635 и ищем следующий текст:
    $cols[$i] = "`$cols[$i]` rlike '$q'";
  2. Меняем данную строчку на:
    $cols[$i] = "lower(`$cols[$i]`) rlike lower('$q')";

В результате перед запросом к MySQL искомая строка будет переведена в нижний регистр и при запросе будет искать в поле Заголовка или Тела статьи, которые тоже приведены к нижнему регистру.

Данное изменение необходимо проделывать после каждого обновления версии Textpattern. Если изменений в файлы вы вносили мало (а лучше вообще этого не делать ), то желательно именно так и поступать при обновлении: обновлять все файлы, а затем по-новой вносить свои патчи .

Этот патч немного увеличивает время запроса к базе. В моих экспериментах с локальным вебсервером (Денвер) на Интел 800МГц , 14 статей в базе, время поискового запроса выросло процентов на 10-15%. В сумме же, учитывая остальные запросы (их может быть около 15) и время генерации страницы, общая задержка в выдаче страницы с поиском составила 1.12%.

В скором времени планирую проверить эти цифры на живом сайте с несколькими сотнями статей.

Комментарии:

    • sva
    • 18 сентября 2009
    • Текст ищется, но если регистр найденного текста не совпадает – не работает подсветка найденного.

    • the_ghost
    • 18 сентября 2009
    • sva – в какой версии проверяли?

    • sva
    • 04 октября 2009
    • 4.08

      Сегодня попробовал в 4.2 – такой же результат.
      И в версии 4.2 – строчка 645

    • Mut@NT
    • 01 января 2011
    • Все заработало, спасибо

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

Написать русский комментарий [5]

  •  
  • Textile HTML Отображение
    _выделение_ <em>выделение</em> выделение
    *усиление* <strong>усиление</strong> усиление
    __курсив__ <i>курсив</i> курсив
    **полужирный** <b>полужирный</b> полужирный
    ??цитата?? <cite>цитата</cite> цитата
    bq. большая цитата <blockquote>большая цитата</blockquote>
    большая цитата
    -удалённый- <del>удалённый</del> удалённый
    +вставленный+ <ins>вставленный</ins> вставленный
    ^надстрочный^ <sup>надстрочный</sup> надстрочный
    ~подстрочный~ <sub>подстрочный</sub> подстрочный
    (с)AngryCAT &#169;AngryCAT ©AngryCAT
    Textile(r) Textile&#174; Textile®
    Textpattern(tm) Textpattern&#8482; Textpattern™
    длиное -- тире длиное &#8212; тире длиное — тире
    короткое - тире короткое &#8211; тире короткое – тире
    "ссылка":http://ya.ru <a href=”http://ya.ru”>ссылка</a> ссылка
    !http://ya.ru/logo.png! <img src=”http://ya.ru/logo.png”>