Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поисковая система

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: как сделать
Baton
Отправлено: 21 Сентября, 2006 - 13:37:54
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Авг. 2006  
Откуда: Казахстан Астана


Помог: 0 раз(а)




Ни как немогу сделать нормальную поисковую систему, помогите с технологией поиска
Информация находиться в базе MySql
 
 Top
evgenijj
Отправлено: 22 Сентября, 2006 - 14:21:39
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




 
 Top
Baton
Отправлено: 25 Сентября, 2006 - 08:49:49
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Авг. 2006  
Откуда: Казахстан Астана


Помог: 0 раз(а)




классно
 
 Top
evgenijj
Отправлено: 09 Октября, 2006 - 10:58:39
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Тут пришлось писать систему поиска по каталогу продукции - может кому и пригодится.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. require "./cfg/general.inc.php";
  4. require "./cfg/connect.inc.php";
  5. require "./functions/mysql.php";
  6.  
  7. // Соединяемся с базой данных
  8. db_connect(DB_HOST,DB_USER,DB_PASS) or die (db_error());
  9. db_select_db(DB_NAME) or die (db_error());
  10.  
  11. // Количество записей результатов поиска на странице           
  12. define("SEARCH_RESULT_ON_PAGE", 5);
  13.  
  14. echo get_html_search();
  15.  
  16. function get_search_form()
  17. {
  18.         $html = "<form name='search' action='".$_SERVER["PHP_SELF"]."' method='GET'>[slash]n";
  19.         $html = $html."Поиск:<input value='Введите слово' name='query' onfocus=[slash]"query.value=''[slash]" size='20' maxlength='64'/>[slash]n";
  20.         $html = $html."<input type='submit' value='Искать'/>[slash]n";
  21.         $html = $html."</form>[slash]n";
  22.         return $html;
  23. }
  24.  
  25. function get_html_search()
  26. {
  27.         if ( !isset($_GET["query"]) or empty($_GET["query"]) )
  28.         {
  29.                 $html = "<h3>Поиск</h3>[slash]n".get_search_form();
  30.         }
  31.         else
  32.         {
  33.                 // Обрезаем строку до длины, указанной в атрибуте maxlength
  34.                 $search = substr( $_GET["query"], 0, 64 );
  35.                 // Убираем пробелы в начале и конце строки поиска
  36.                 $search = trim( $search );
  37.                 // Убираем все "ненормальные" символы
  38.                 $good = preg_replace("/[^\\w\\x7F-\\xFF\\s]/", " ", $search);
  39.                 // Сжимаем двойные пробелы
  40.                 $good = ereg_replace(" +", " ", $good);
  41.                
  42.                 // Получаем корни искомых слов
  43.                 $stemmer = new Lingua_Stem_Ru();
  44.                 $tmp = explode( " ", $good );
  45.                 foreach ( $tmp as $wrd )
  46.                 {
  47.                         // Если слово очень короткое - не используем его в поиске
  48.                         if ( strlen($wrd) < 3 ) continue;
  49.                         $words[] = $stemmer->stem_word($wrd);
  50.                 }
  51.                 // Склеиваем массив $words обратно в строку
  52.                 $search_str = implode( "* ", $words );
  53.                 $search_str = $search_str."*";
  54.                
  55.                 // Составляем запрос к БД, чтобы узнать количество записей в результатах поиска -
  56.                 // это нужно для построения постраничной навигации
  57.                 $search_query = "SELECT COUNT(*)
  58.                                                 FROM ".PRODUCTS_TABLE."
  59.                                                 WHERE MATCH (name, description) AGAINST ('".$search_str."' IN BOOLEAN MODE)>0";
  60.                
  61.                 $res = db_query( $search_query );
  62.                 $total = db_result( $res, 0, 0 );
  63.                
  64.                 // Проверяем передан ли номер текущей страницы - постраничная навигация
  65.                 if ( isset($_GET['page']) )
  66.                         $page = $_GET['page'];
  67.                 else
  68.                         $page = 1;
  69.  
  70.                 // Начальная позиция
  71.                 $start = ($page - 1) * SEARCH_RESULT_ON_PAGE;
  72.                        
  73.                 if ( $total > 0 )
  74.                 {
  75.                         $html = "<h3>Результаты поиска:</h3>[slash]n";
  76.                         $html = $html."<p>Вы искали: ".$good."</p>[slash]n";
  77.                         $search_query = "SELECT productID, name, description,
  78.                                                         MATCH (name, description) AGAINST
  79.                                                         ('".$search_str."' IN BOOLEAN MODE) AS relev
  80.                                                         FROM ".PRODUCTS_TABLE."
  81.                                                         HAVING relev>0 ORDER BY relev DESC LIMIT ".$start.", ".SEARCH_RESULT_ON_PAGE;
  82.                                                                
  83.                         $res = db_query( $search_query );
  84.                        
  85.                         // Это для подсвечивания искомых слов
  86.                         $highlight = implode( "[^-,[:space:]]*|", $words )."[^-,[:space:]]*";
  87.                        
  88.                         $html = $html."<table width='100%' cellspacing='4' cellpadding='2'>[slash]n";
  89.                         $html = $html."<tr bgcolor='#EEEEEE'><th width='5%'>ID</th><th>Наименование</th><th >Описание</th></tr>[slash]n";
  90.                         while ( $result = db_fetch_array( $res ) )
  91.                         {
  92.                                 $html = $html."<tr bgcolor='#F5F5F5' valign='top'>[slash]n";
  93.                                 $html = $html."<td>".$result["productID"]."</td>[slash]n";
  94.                                 // Подсвечиваем искомые слова
  95.                                 $result["name"] = eregi_replace($highlight, "<font color='#cc0000'>[slash][slash]0</font>", $result["name"]);
  96.                                 $html = $html."<td>".$result["name"]."</td>[slash]n";  
  97.                                 // Подсвечиваем искомые слова
  98.                                 $result["description"] = eregi_replace($highlight, "<font color='#cc0000'>[slash][slash]0</font>", $result["description"]);                            
  99.                                 $html = $html."<td>".$result["description"]."</td>[slash]n";                           
  100.                                 $html = $html."</tr>[slash]n";
  101.                         }
  102.                         $html = $html."</table>[slash]n";
  103.                        
  104.                         // Число страниц с результатами поиска
  105.                         $cnt_pages = ceil( $total/SEARCH_RESULT_ON_PAGE );
  106.                        
  107.                         // Постраничная навигация
  108.                         if ( $cnt_pages > 1 )
  109.                         {
  110.                                 $html = $html."<div style='margin-left:4px'>";
  111.                                 for( $i = 1; $i <= $cnt_pages; $i++ )
  112.                                 {
  113.                                         if($i != $cnt_pages)
  114.                                         {
  115.                                                 if($page == $i)
  116.                                                 {
  117.                                                         $html = $html."[".(($i - 1)*SEARCH_RESULT_ON_PAGE + 1)."-".$i*SEARCH_RESULT_ON_PAGE."] ";
  118.                                                 }
  119.                                                 else
  120.                                                 {
  121.                                                         $html = $html."<a href='".$_SERVER["PHP_SELF"]."?page=".$i."&query=".$good."'>[".(($i - 1)*SEARCH_RESULT_ON_PAGE + 1)."-".$i*SEARCH_RESULT_ON_PAGE."]</a> ";
  122.                                                 }
  123.                                         }
  124.                                         else
  125.                                         {
  126.                                                 if($page == $i)
  127.                                                 {
  128.                                                         $html = $html."[".(($i - 1)*SEARCH_RESULT_ON_PAGE + 1)."-".$total."] ";
  129.                                                 }
  130.                                                 else
  131.                                                 {
  132.                                                         $html = $html."<a href='".$_SERVER["PHP_SELF"]."?page=".$i."&query=".$good."'>[".(($i - 1)*SEARCH_RESULT_ON_PAGE + 1)."-".$total."]</a> ";
  133.                                                 }
  134.                                         }
  135.                                 }
  136.                                 $html = $html."</div>[slash]n";
  137.                         }
  138.                        
  139.                 }
  140.                 else
  141.                 {
  142.                         $html = "<h3>Результаты поиска:</h3>[slash]n<p>Ничего не найдено.</p>[slash]n";
  143.                 }              
  144.         }      
  145.         return $html;  
  146. }
  147. ?>
  148.  

А класс для извлечения корней русских слов можно взять на сайте Дмитрия Котерова:
http://forum[dot]dklab[dot]ru/php/advise[dot][dot][dot]RussianWord[dot]html
 
 Top
Мух
Отправлено: 12 Декабря, 2008 - 15:53:30
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2008  


Помог: 0 раз(а)




Здравствуйте! У меня тут проблема с куском кода:
CODE (text):
скопировать код в буфер обмена
  1. require "./cfg/general.inc.php";
  2. require "./cfg/connect.inc.php";
  3. require "./functions/mysql.php";


Пишет
Цитата:
Warning: main(./cfg/connect.inc.php): failed to open stream: No such file or directory in W:\www\searchings.php on line 3

Fatal error: main(): Failed opening required './cfg/connect.inc.php' (include_path='.;W:\usr\local\PHP\includes;W:\usr\local\PHP\pear') in W:\www\searchings.php on line 3


Я так понял, что у меня нет этих трех файликов - general.inc.php, connect.inc.php и mysql.php, правильно?
Поиск юзал, таких файлов не нашлось.. (я использую phpMyAdmin, через Uniserver).

(Отредактировано автором: 12 Декабря, 2008 - 15:54:09)

 
 Top
Ыыы
Отправлено: 12 Декабря, 2008 - 16:08:09
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Июль 2008  
Откуда: Россия, Хабаровск


Помог: 0 раз(а)




Цитата:
Я так понял, что у меня нет этих трех файликов

Спасибо поржал Улыбка
 
 Top
Champion Супермодератор
Отправлено: 12 Декабря, 2008 - 16:09:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Это верно, таких файликов увас нет. Во всяком случае по тому, пути, который указан
 
 Top
valenok Модератор
Отправлено: 12 Декабря, 2008 - 17:28:21
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Мух это кусочек системы поиска по каталогу.
у вас не каталог


-----
Truly yours, Sasha.
 
My status
 Top
Мух
Отправлено: 12 Декабря, 2008 - 18:46:59
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2008  


Помог: 0 раз(а)




Улыбка Я наверно неправильно выразился, мне нужно сделать поисковую систему для базы, созданной в phpMyadmin. Эта прожка сможет искать по такой базе?.
 
 Top
Вездеход
Отправлено: 12 Декабря, 2008 - 19:19:59
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




Мух нет канешно же )


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Shock
Отправлено: 13 Декабря, 2008 - 15:37:13
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Дек. 2008  


Помог: 0 раз(а)




phpMyAdmin тут воооообще роли не играет. Это только скрипт для управления Mysql.
 
 Top
Гость
Отправлено: 13 Декабря, 2008 - 16:55:43
Post Id


УДАЛЁН










Цитата:
Базы, созданной в phpMyadmin
Да хоть в командной строке mysql [.exe]
Более того, насколько мне известно, PHP настолько всеядлив, что лдинакво работае и с MySQL, и с LiteSQL, и с другими. Это неважно. Напишите сами свой класс для работы с базой данных, ибо это дело 5 минут, так сказать Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB