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]   

> Без описания
de'vovan
Отправлено: 21 Февраля, 2007 - 08:01:26
Post Id



Новичок


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


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




Доброе утро!
Пишу "поиск" для своего сайта, за основу взял вашу статью. Прошу вашей помощи, я недавно знаком с PHP и многое ещё не понятно. Собственно первый вопрос возник практически сразу при составлении механизма работы скрипта:
1. Открываем опр. таблицу базы данных, считываем поле(напр. text) первой записи, заносим в переменную( пусть будет $articles1 ).
2. Убираем из текста в переменной $articles1 "мусор" : html теги, знаки препинания, символы, слова короче 3 букв и т.п.
3. Разбиваем полученный текст на слова и заносим в массив, затем записываем эти слова в индекс со счетчиком(для вывода результатов по релевантности).

С этим этапом я вроде разобрался, но мне не понятно, такой индекс нужен для каждой записи в базе данных, или же один для всей таблицы? И, как во втором случае (индекс для всей таблицы) строится ссылка на опр. запись в базе данных?
Вроде подробно изложил, надеюсь на вашу помощь.
 
 Top
Viper
Отправлено: 21 Февраля, 2007 - 08:34:06
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




по идее для каждой записи нужен индекс если нужно искать по части фразы или по отдельному слову


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
de'vovan
Отправлено: 21 Февраля, 2007 - 10:00:13
Post Id



Новичок


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


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




Viper пишет:
по идее для каждой записи нужен индекс если нужно искать по части фразы или по отдельному слову

То есть я могу специально для поиска создать в каждой записи со статьёй, список ключевых слов в отдельном поле? Но как в индексе отобразить кол-во повторений? Че та я ниче не понял...
 
 Top
Viper
Отправлено: 21 Февраля, 2007 - 11:43:09
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




делается отдельная таблица вида
word /word_id /common
primary /index /tiny
слово /word_id /сколькосовпадений

и ещё таблица вида
id_title /word_id /match
index /index /tinyint
статья где находиться искомое слово /word_id /сколькосовпадений

примерно так.

т.е. получиться что у тебя есть база слов из статей с ключами и соответсвием найденых слов к конкретной статье содержащей искомое слово + отдельно количество найденых слов из запроса


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
de'vovan
Отправлено: 21 Февраля, 2007 - 12:49:48
Post Id



Новичок


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


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




Viper пишет:
делается отдельная таблица вида
word /word_id /common
primary /index /tiny
слово /word_id /сколькосовпадений

и ещё таблица вида
id_title /word_id /match
index /index /tinyint
статья где находиться искомое слово /word_id /сколькосовпадений

примерно так.

т.е. получиться что у тебя есть база слов из статей с ключами и соответсвием найденых слов к конкретной статье содержащей искомое слово + отдельно количество найденых слов из запроса
Не понялНе понял
Сори, не могу понять структуру таблиц и принцип работы. Однако
А если вобщем, вот скрипт создал индекс для опр. статьи в виде файла или таблицы с полями "слово" и "кол-во_повторений". Допустим таким скриптом я обошел все статьи и для каждой создал индекс, а что дальше? Писать скрипт, который перебирает эти индексы и ищет наибольшее число повторений искомого слова? Я вообще хоть правельно мыслю, или же есть более простые решения организации поиска на сайте? Мастера что скажете?А?!
 
 Top
Viper
Отправлено: 21 Февраля, 2007 - 13:54:29
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




ну я не мастер Улыбка
ищем мы не число повторений, а сопоставляем индекс конкретного искомого слова с индексом статьи. и идексируем в этих таблицах не статьи, а именно из статей выбираем слова и индексируем их(иначе не понятно будет какое слово в какой статье находиться), а дальше сопоставляем.

пример:
запрос -> ищем слово + id -> сопоставляем id слова с id статьи -> выдаем статью

ЗЫ! id_title статья с индексом 2, word_id слово из первой таблицы. а в первой таблице - word искомое слово из конкретной статьи, word_id индекс используемый для сопоставления в 2 таблице.

Прошу прощения за "корявое" объяснение Улыбка


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
de'vovan
Отправлено: 21 Февраля, 2007 - 14:00:06
Post Id



Новичок


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


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




Все равно спасибо за внимание!
Только я не понял вот этого:
Viper пишет:
ЗЫ! id_title статья с индексом 2, word_id слово из первой таблицы. а в первой таблице - word искомое слово из конкретной статьи, word_id индекс используемый для сопоставления в 2 таблице.

 
 Top
valenok
Отправлено: 21 Февраля, 2007 - 17:22:38
Post Id



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


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


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




Цитата:
1. Открываем опр. таблицу базы данных, считываем поле(напр. text) первой записи, заносим в переменную( пусть будет $articles1 ).
2. Убираем из текста в переменной $articles1 "мусор" : html теги, знаки препинания, символы, слова короче 3 букв и т.п.
3. Разбиваем полученный текст на слова и заносим в массив, затем записываем эти слова в индекс со счетчиком(для вывода результатов по релевантности).



Что за статья такая? В мускуле существую функции контекстного поиска по базе.

(Добавление)
Писал я у себя поиск на сайте.
В конце поставил форму поиска через яндекс..

SELECT id FROM base
WHERE MATCH(text) AGAINST('искомое слово');

Также существуют различные фции как RLIKE & REGEXP
mysql.ru


-----
Truly yours, Sasha.
 
My status
 Top
valenok
Отправлено: 21 Февраля, 2007 - 20:22:02
Post Id



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


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


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






-----
Truly yours, Sasha.
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Обсуждение статей »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB