Хотите принять участие в обсуждении? Авторизуйтесь или пройдите регистрацию.
Форум закрыт и работает только в режиме чтения. Более подробную информацию читайте в сообществе.
Сделал вывод в файл из php скрипта AjaxSearch.php запроса для поиска, выводит нормально. И результатов поиска выводит ерунду.Т.е. ищу слово "Текст". В файл query.txt выводится слово текст, а в файл results.txt выводится бред, типа должно быть слово "Главная", а там:
Главная
А вот если я ищу, например, слово "съешь", то и в файле results.txt все нормально.
Ура, товарищи! :)) Нашел виноватого. ) В общем что-то происходит с кодировкой во время обработки вывода. Точнее когда AjaxSearch выделяет искомое выражение. Поставить параметр &extract=`0` то все работает.
Думаю все из-за использования немультибайтовых функций. Вот отрезок кода, который все портит:
if ($extract) {
$highlightClass = 'ajaxSearch_highlight';
$text=$row['content'];
$count=1;
$summary='';
$toAdd = PrepareSearchContent( $text, $length=200, $search[0] );
strip_tags( $text );
foreach ($search as $searchTerm) {
if (preg_match('/' . preg_quote($searchTerm) . '/i', $text)) {
if ($count > 1) { // The first summary was already extracted above
$toAdd = SmartSubstr( $text , $length=200, $searchTerm );
}
$summary .= preg_replace( '/' . preg_quote( $searchTerm, '/' ) . '/i', '', $toAdd ) . ' ';
}
$highlightClass .= ' AS_ajax_highlight'.$count;
$count++;
}
$text=$summary;
}Сейчас исправлю его и выложу обновленный вариант.
Ну вот - это плюбому функции для работы с регулярными выражениями. Скорее всего они на сервере не замещены мультибайтовыми из mb_string.
Попробуй добавить в .htaccess:
php_value mbstring.func_overload 7php_value default_charset UTF-8php_value mbstring.language Russian
Не помогает. Там еще есть PrepareSearchContent()
и SmartSubstr()
Может в них дело.
Ну вот вроде заработал. Я решил не заморачиваться на поиске ошибок и переписал этот участок заново. Вкладываю архив, который нужно распаковать в папку сниппета (assets/snippets/AjaxSearch/), заменив файлы.
Исправления и нововведения:
Это просто замечательно :-)
Теперь только документации не хватает русской для полного счастья :-))
Великолепно :-)
Кстати, там последняя версия-то сейчас AjaxSearch 1.7.1. Ты ее использовал или предустановленную? В поледней версии там еще новые параметры есть:
&parents [comma-separated list of integers MODx document IDs] (optional)
A list of parent-documents whose descendants you want searched to &depth
depth when searching. All parent-documents by default
&depth [int] (optional)
Number of levels deep to go.
Any number greater than or equal to 1. All levels by default
&documents [comma-separated list of integers MODx document IDs] (optional)
A list of documents where to search
&extractLength [int] (optional)
Length of extract around the search words found
between 50 and 800 characters. 200 by default
&opacity [float value between 0. and 1.] (optional)
Opacity of the ajaxSearch_output div where are returned the ajax results.
D?fault is 1. Float value between 0. (transparent) and 1. (opaque)
&useAllWords [ 1 | 0 ] (optional)
If you want only documents which contain ALL words in the search string, set to true
Otherwise, the search will return all pages with ONE or more of the search words. Default 0 (False))
&config [config_name | "default"] (optional)
Load a custom configuration
config_name - Other configs installed in the configs folder or in any folder within the MODx base path via @FILE
Configuration files are named in the form: <config_name>.config.php
Warning:
&useAllWords is now deprecated and replaced by &advSearch=`allwords`
Advanced search:
&advSearch [ 'exactphrase' | 'allwords' | 'nowords' | 'oneword' ]
- exactphrase : provides the documents which contain the exact phrase
- allwords : provides the documents which contain all the words
- nowords : provides the documents which do not contain the words
- oneword : provides the document which contain at least one word [default]
Search in hidden documents from menu
&hideMenu [ 0 | 1 | 2 ]
- 0 : search only in documents visible from menu
- 1 : search only in documents hidden from menu
- 2 : search in hidden or visible documents from menu [default]