Посмотрел страничку на этом сайте о поиске. В глаза бросилась тавтология: "обязывают обязательное наличие ссылок". Вот и ещё одно применение АS: найти фразу и поправить.
На моем сайте (ссылка на него слева) Ajax-поиск встроен в дизайн, и появляющиеся результаты ничему не мешают.
Ещё случаются казусы, когда выводятся одни линки на заголовки документов. Пока понял, что в одном случае текст, где искомые слова, забубырил следом за формой. Другой случай, на первый взгляд, нормальный. Не понимаю, почему в результатах одна ссылка, а фрагмент документа отсутствует.
Ну, бывают и глюки, когда шибко быстро пишется. А найти, кстати, не так просто, так как этот поиск плохо приспособлен для нахождения словосочетаний. Будут найдены страницы, где встречается хотя бы одно из слов, а не все заданные слова. Разработчикам неплохо было бы подумать о сортировке результатов по релевантности…
Посмотрел страничку на этом сайте о поиске. В глаза бросилась тавтология: "обязывают обязательное наличие ссылок". Вот и ещё одно применение АS: найти фразу и поправить.
А зачем этот параметр: &useAllWords ?
...поиск плохо приспособлен для нахождения словосочетаний. Будут найдены страницы, где встречается хотя бы одно из слов, а не все заданные слова. Разработчикам неплохо было бы подумать о сортировке результатов по релевантности…
После этих исправлений подсветка работает.OK, so I need to do some tests for non-UTF8 site like latin1, latin2 ...
По-хорошему нужно проверять, какая используется кодировка, и добавлять u только для utf8.
функция urlencode правильно кодирует строки, когда не используется Ajax, и не кодирует, когда он используется (получаются адреса с русскими буквами).OK. I Will test this solution with non-UTF8 like latin1
Решение: В файле ajaxSearch.php найти выражения urlencode(htmlentities($searchString,ENT_QUOTES,$pgCharset)) (там они встречаются 2 раза) и заменить их на urlencode(urlencode(htmlentities($searchString,ENT_QUOTES,$pgCharset))).
Проблема – если в найденной странице (в Ajax-результатах) имеется символ процента – %, весь Ajax-поиск рушится. То есть выдает ошибку распознавания URL (это, как мне кажется, проблема реализации Ajax в mootools, хотя могу и ошибаться).I will investigate this solution later as it seems it needs more tests
Решение (не слишком удачное) – % меняю на «проц.». При этом, если перейти на страницу поиска или на найденную страницу, там будут знаки %, слово «проц.» только в Ajax-результатах. Нормальное решение требует углубленного изучения проблемы.
Проблема: Если ищется словосочетание Слово1 Слово2, и точно так оно имеется на странице, выводится сначала найденный фрагмент для первого слова, а потом практически такой же фрагмент для второго слова, что не совсем идеологически верно – фактически в результатах поиска два раза один фрагмент с разными подсвеченными словами.I have worked in parrallel to rebuild the logic of the extracion mechanism. So this issue should be corrected. I will delivered the 1.8 as a beta in order that you can test again with Russian letters.
Решение: нужно менять логику, чтобы найденные в одном фрагменте слова больше не искались. Сходу такое не реализовать
3. Проблема – если в найденной странице (в Ajax-результатах) имеется символ процента – %, весь Ajax-поиск рушится. То есть выдает ошибку распознавания URL (это, как мне кажется, проблема реализации Ajax в mootools, хотя могу и ошибаться).
Решение (не слишком удачное) – % меняю на «проц.». При этом, если перейти на страницу поиска или на найденную страницу, там будут знаки %, слово «проц.» только в Ajax-результатах. Нормальное решение требует углубленного изучения проблемы.
В AjaxSearch.php для 1.6 (ajaxSearch.php для 1.7) найти вызов функции PrepareSearchContent и перед ним вставить что-то вроде
AKots а как именно сделать замену % на проц.??? Можно кусочек кода или скажи хотябы где копать ?
...
Проблема, в великом и могучем, со склонениями и, соотвественно, с двумя строками в конфигурации:
$_lang[’as_resultsFoundTextSingle’] = ’По запросу "%s" найден %d результат.’;
$_lang[’as_resultsFoundTextMultiple’] = ’По запросу "%s" найдено %d результатов.’;
...
$_lang['as_resultsFoundTextSingle'] = 'По запросу "%2$s" найден %1$d результат.'; $_lang['as_resultsFoundTextMultiple'] = 'По запросу "%2$s" найдено %1$d результатов.';
кодировка сайта в cp1251 а все советы под utf8...