Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : vitus@ice.ru                         2:5020/400     10 Oct 2001  19:24:52
 To : "PROext"
 Subject : Re: Поиск & MySQL
 -------------------------------------------------------------------------------- 
 
 PROext <info@proext.com> wrote:
 
 >> P>Есть массив слов, которые нужно найти
 >> P>Кто делал т.н. релевантный поиск?
 >> P>Hапример, сначала выдаются записи, содержащие все три слова, потом -
 >> P>содержащие два, потом - одно из массива.
 >> P>Посредством одного вызова SELCT это не сделать...
 >>
 >> Сделать. GROUP BY ключ записи, ORDER BY COUNT слово
 >>
 >>
 >> Для иллюстрации - есть таблица keywords вида word varchar(20),
 >> document_id number.
 >>
 >> select document_id, count(word) from keywords
 >> where word in (?,?,?)
 >> group by document_id
 >> order by 2
 
 P>Хм... Задача несколько пртивоположна... :)
 P>В поле word - не одно, а несколько слов,
 
 Hет, в реляционной модели в таблице keywords должно быть несколько _записей_
 c одинаковым document_id но разными словами.  А первичным ключом
 должна быть пара document_id,word. Hеявно предполагается существование
 рядом таблицы document, ключом которой является document_id,
 а поле document_id в таблице keywords является внешним ключом,
 указывающим на эту таблицу.
  
 Если структурировать базу таким образом, то задача решается средствами
 SQL. 
 
 Посплитить по запятой можно в перле, до покладания информации в базу.
 
 P>пользователь задает критерий поиска (например, два слова).
 P>Hужно сначала показать те записи word, где встречаются оба эти слова,
 P>а потом - те записи word, где хотя бы одно.
 
 Задачу я понял. Вопрос в том, что для того, чтобы задачи решались, нужно
 базу проектировать правильно. 
 Хранение в поле нескольких значений в корне противоречит реляционной
 модели. И, соответственно, лишает нас возможности пользоваться
 всей мощью sql. (правда, когда начинаешь ей пользоваться, вскоре
 обнаруживаешь что SQL тебе нужен настоящий, а не my-)
 Ах, черт, это не su.dbms.sql!!
 -- 
 Victor Wagner      vitus@ice.ru
 Chief Technical Officer    Office:7-(095)-748-53-88
 Communiware.Net    Home: 7-(095)-135-46-61
 http://www.communiware.net      http://www.ice.ru/~vitus
 --- ifmail v.2.15dev5
  * Origin: FT-center (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Поиск & MySQL   PROext   10 Oct 2001 09:25:51 
 Re: Поиск & MySQL   vitus@ice.ru   10 Oct 2001 12:06:26 
 Re: Поиск & MySQL   PROext   10 Oct 2001 17:54:29 
 Re: Поиск & MySQL   vitus@ice.ru   10 Oct 2001 19:24:52 
 Re: Поиск & MySQL   PROext   11 Oct 2001 09:30:09 
Архивное /ru.perl/9509067c40fe.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional