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

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

#1 22 октября 2014 в 03:14
Доброго всем времени суток. Столкнулся с интересной проблемкой. icms 1.10.4. Вводятся в каталог статей данные (пример №666-НПА), которые нужно находить через поиск, но вот система не учитывает это единым словом, а разделяет на 666 и НПА. А как известно слово менее 4 символов в поиск не входит. 666НПА — срабатывает нормально, но это не правильное написание.
Как можно решить данный вопрос? Заранее благодарен за предложения решений 😊
#2 23 октября 2014 в 10:11
Тема АП… пжалуйста предложите решение!
#3 23 октября 2014 в 13:40
Файл .components/search/model.php стр 547 измени на
  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 измени на
  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. }
#4 23 октября 2014 в 16:02
Геннадий Иванович, спасибо за то что откликнулись.

Другой вопрос — почему у меня это не работает. Я изначально менял уже значения в модель(только на 2 и 3, а не 1 и 2). Сейчас и фронтед исправил как написали, а потом уже и скопировал весь код. Ни какого эффекта.
#5 23 октября 2014 в 18:14
Скела!
Это второй скрин после чистой установки системы instantcms.ru/get/1.10.4.

Другой вопрос — почему у меня это не работает

Скела
Отложите до завтра, и все будет правильно!
#6 23 октября 2014 в 19:48

но по умолчанию ищет все слова, а не фразу целиком надо заменить так, чтобы по умолчанию искалась фраза целиком, а не свопадения по всем словам

*beez*
В шаблоне temlates/*/modules/mod_search.tpl, установите атрибут selected="selected"
на значении опции phrase
  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>
#7 23 октября 2014 в 21:14
предложу не решение, но альтернативу)
также не всегда устраивает встроенный поиск, поэтому использую поиск по сайту через яшу/гошу
Часто даже крупные сайты используют такое решение (например site.yandex.ru)

Это подойдет если страницы вашего встроенного поиска не участвуют в выдаче!)
#8 23 октября 2014 в 21:21

через яшу/гошу

reload
А если с сайтом все в порядке и он живой, то минут через 20 новый материал уже в поиске по сайту участвует.
Быстро робот, отдает результаты сразу в персональный поиск.
#9 23 октября 2014 в 23:20
и я отдал предпочтение поиску яндекса
создал страницу html, в нее исходный код всей страницы сайта из браузера, лишнее удалил, в нужное место результаты яндекса во фрейме
а то родной поиск мог и 0 результатов показать
#10 24 октября 2014 в 00:50
Касаемо просто новостей согласен, но вопрос про 3 символа не случаен. Дело в том, что нужен оперативный поиск нормативных актов внутри сайта, которые в основном уникумы 5%. Доступность в тот же час после опубликования. И в случае отсутствия — голова с плеч 😊
#11 24 октября 2014 в 00:54
Ставите поиск от яндекса или гугла, после публикования ваших не уникальных или уникальных, не важно, документов, сразу скармливаете пс.
Ваши документы могут не участвовать в основном индексе и выдаче, но в персональном поиске по сайту они будут.
И будут показаны при поиске на вашем сайте.
Создайте персональные поиски в яндексе и гуле из панели управления и под своим логином и подтвержденными сайтами, проверьте…
#12 24 октября 2014 в 01:00
Геннадий Иванович, Ваше решение работает. И сразу работало.
Но вот в чем проблема: поиск "от" замечательно, а вот к примеру "нпа" или "696" не работает и даже "нп" (http://gazetast.ru/search нужно находить вот это) — попробуйте сами.
И я ума не приложу почему так.
#13 26 октября 2014 в 14:31

Но вот в чем проблема: поиск "от" замечательно, а вот к примеру "нпа" или "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,
Или если у Вас основная работа по поиску трех -и более цифр, то тогда стоит в таблице контента создать дополнительное поле, и записывать туда значения номеров документов.И организовать поиск по этому полю.
#14 26 октября 2014 в 15:11
Геннадий Иванович, огромное спасибо за развернутый ответ!
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.