Поиск не ищет то что нужно

Поиск на нужный текст не срабатывает

 
Посетитель
small user social cms
Медаль
Сообщений: 455
Доброго всем времени суток. Столкнулся с интересной проблемкой. icms 1.10.4. Вводятся в каталог статей данные (пример №666-НПА), которые нужно находить через поиск, но вот система не учитывает это единым словом, а разделяет на 666 и НПА. А как известно слово менее 4 символов в поиск не входит. 666НПА - срабатывает нормально, но это не правильное написание.
Как можно решить данный вопрос? Заранее благодарен за предложения решений smile
Чистить кэш, исправлять базу ручками и искать в гугле умею. Если задаю вопрос, то значит есть существенная причина!!!
Посетитель
small user social cms
Медаль
Сообщений: 455
Тема АП.. пжалуйста предложите решение!
Чистить кэш, исправлять базу ручками и искать в гугле умею. Если задаю вопрос, то значит есть существенная причина!!!
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 352
Файл .components/search/model.php стр 547 измени на
Код PHP:
  1. // любое слово
  2. if ($this->look == 'anyword'){
  3. foreach($words as $w){
  4. $w = trim($w);
  5. if(mb_strlen($w)>1){
  6. if(mb_strlen($w)==2){
  7. $this->against .= $w.'* ';
  8. $this->words .= $w.' ';
  9. } else {
  10. $this->against .= $stemmer->stem_word($w).'* ';
  11. $this->words .= $stemmer->stem_word($w).' ';
  12.  
  13. }
  14. }
  15. }
  16. }
  17. // все слова
  18. if ($this->look == 'allwords'){
  19. $this->against = '>\"'.$this->query.'\" ';
  20. $this->against .= '<(';
  21. foreach($words as $w){
  22. $w = trim($w);
  23. if(mb_strlen($w)>1){
  24. if(mb_strlen($w)==2){
  25. $this->against .= '+'.$w.'* ';
  26. $this->words .= $w.' ';
  27. } else {
  28. $this->against .= '+'.$stemmer->stem_word($w).'* ';
  29. $this->words .= $stemmer->stem_word($w).' ';
  30.  
  31. }
  32. }
  33. }
  34. $this->against .= ')';
  35. }
Файл components/searh/frontend.php стр 37 измени на
Код PHP:
  1. if (mb_strlen($model->query)<=1 && mb_strlen($model->query)>0){
  2. cmsCore::addSessionMessage($_LANG['ERROR'].': '.$_LANG['SHORT_QUERY'], 'error');
  3. $inCore->redirect('/search');
  4. }
Поиск не ищет то что нужно
Посетитель
small user social cms
Медаль
Сообщений: 455
Геннадий Иванович, спасибо за то что откликнулись.

Другой вопрос - почему у меня это не работает. Я изначально менял уже значения в модель(только на 2 и 3, а не 1 и 2). Сейчас и фронтед исправил как написали, а потом уже и скопировал весь код. Ни какого эффекта.
Чистить кэш, исправлять базу ручками и искать в гугле умею. Если задаю вопрос, то значит есть существенная причина!!!
Посетитель
small user social cms
Медаль
Сообщений: 352
Скела!
Это второй скрин после чистой установки системы http://instantcms.ru/get/1.10.4.
Поиск не ищет то что нужно

Скела:
Другой вопрос - почему у меня это не работает
Отложите до завтра , и все будет правильно!
Посетитель
small user social cms
Медаль
Сообщений: 352
*beez*:
но по умолчанию ищет все слова, а не фразу целиком надо заменить так, чтобы по умолчанию искалась фраза целиком, а не свопадения по всем словам
В шаблоне temlates/*/modules/mod_search.tpl , установите атрибут selected="selected"
на значении опции phrase
Код PHP:
  1.  
  2. <select name="look" style="width:100px" onchange="$('#search_form').submit(); ">
  3. <option value="phrase" selected="selected" >{$LANG.PHRASE}</option>
  4. <option value="allwords" >{$LANG.ALL_WORDS}</option>
  5. <option value="anyword" >{$LANG.ANY_WORD}</option>
  6.  
  7. <option value="phrase" selected="selected" >{$LANG.PHRASE}</option>
  8.  
  9. </select>
Редактировалось: 1 раз (Последний: 23 октября 2014 в 20:26)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2928
предложу не решение, но альтернативу)
также не всегда устраивает встроенный поиск, поэтому использую поиск по сайту через яшу/гошу
Часто даже крупные сайты используют такое решение (например site.yandex.ru)

Это подойдет если страницы вашего встроенного поиска не участвуют в выдаче!)
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1897
reload:
через яшу/гошу
А если с сайтом все в порядке и он живой, то минут через 20 новый материал уже в поиске по сайту участвует.
Быстро робот, отдает результаты сразу в персональный поиск.
Контент для ваших проектов. Копирайт всех видов от профессионалов. Создание и продвижение сайтов, реклама.
Посетитель
small user social cms
Медаль
Сообщений: 212
и я отдал предпочтение поиску яндекса
создал страницу html, в нее исходный код всей страницы сайта из браузера, лишнее удалил, в нужное место результаты яндекса во фрейме
а то родной поиск мог и 0 результатов показать
мой подход работает =)
Посетитель
small user social cms
Медаль
Сообщений: 455
Касаемо просто новостей согласен, но вопрос про 3 символа не случаен. Дело в том, что нужен оперативный поиск нормативных актов внутри сайта, которые в основном уникумы 5%. Доступность в тот же час после опубликования. И в случае отсутствия - голова с плеч smile
Чистить кэш, исправлять базу ручками и искать в гугле умею. Если задаю вопрос, то значит есть существенная причина!!!
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1897
Ставите поиск от яндекса или гугла, после публикования ваших не уникальных или уникальных, не важно, документов, сразу скармливаете пс.
Ваши документы могут не участвовать в основном индексе и выдаче, но в персональном поиске по сайту они будут.
И будут показаны при поиске на вашем сайте.
Создайте персональные поиски в яндексе и гуле из панели управления и под своим логином и подтвержденными сайтами, проверьте...
Контент для ваших проектов. Копирайт всех видов от профессионалов. Создание и продвижение сайтов, реклама.
Посетитель
small user social cms
Медаль
Сообщений: 455
Геннадий Иванович, Ваше решение работает. И сразу работало.
Но вот в чем проблема: поиск "от" замечательно, а вот к примеру "нпа" или "696" не работает и даже "нп" (http://gazetast.ru/search нужно находить вот это) - попробуйте сами.
И я ума не приложу почему так.
Чистить кэш, исправлять базу ручками и искать в гугле умею. Если задаю вопрос, то значит есть существенная причина!!!
Посетитель
small user social cms
Медаль
Сообщений: 352
Скела:
Но вот в чем проблема: поиск "от" замечательно, а вот к примеру "нпа" или "696" не работает и даже "нп"
Эти ограничения не связаны с движком ICMS или сценарием php.
Минимальная и максимальная длина слова для индексации определяются innodb_ft_min_token_size и innodb_ft_max_token_size для InnoDB индексы поиска, и ft_min_word_len и ft_max_word_len для MyISAM.
Поэтому полнотекстовый поиск FULLTEXT находит только слова из четырех символов.
Есть рекомендации для поиска по двум-трех-двум символам, но они Вам могут не подойти.

После изменения любого из этих параметров в файле конфигурации MYSQL my.ini, перестройте FULLTEXT индексы, чтобы изменения вступили в силу. Например, сделать поиск трех-символьных слов, поместить следующие строки в файле опций:
[mysqld]
innodb_ft_min_token_size=3
ft_min_word_len=3


Затем перезапустите сервер и восстановить ваши FULLTEXT индексы.

Три цифры в текстах компонета content (поле title) находит
Поиск не ищет то что нужно

Поиск не ищет то что нужно

А НПА не получается.если только в поле (content) искомое слово не подстрока нпанпа.
В вашем случае видимо лучше обратиться к поиску с помощью LIKE . Переписать запросы в файлах psearch.php компонентов или одного компонента content,
Или если у Вас основная работа по поиску трех -и более цифр, то тогда стоит в таблице контента создать дополнительное поле , и записывать туда значения номеров документов.И организовать поиск по этому полю.
Посетитель
small user social cms
Медаль
Сообщений: 455
Геннадий Иванович, огромное спасибо за развернутый ответ!
Чистить кэш, исправлять базу ручками и искать в гугле умею. Если задаю вопрос, то значит есть существенная причина!!!
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.