Как правильно организовать базу?

I
На сайте с 30.03.2006
Offline
1
10752

Где-то вычитал, что делается примерно так:

1) Существует таблица-словарь, где (как я понял) записаны вобще все слова: [ID_слова][слово]

2) Текст страницы помещается в таблицу [ID_страницы][Текст_Страницы]

3) Когда обрабатывается какая-либо страница, расчитывается релевантность каждого слова и т.о. заполняется следующая таблица:

[ID_слова][ID_страницы][Релевантность_Слова]

Как-то так... Но при этом нельзя будет учесть, насколько близко располдожены слова поиска. Ну да ладно. Непонятно другое: как все слова записать в (1)? Яндекс, например, и с опечатками ищет...

ИМХО: это всё несовсем правильно. Предложите свои идеи по модернизации или дайте, плиз, документацию почитать (желательно на русском).

Заранее багодарен.

I
На сайте с 30.03.2006
Offline
1
#2

Спасибо за ссылки, но там как-то в общих чертах... Короче, того, что мне нужно, я так и не нашел.

Я пишу поисковик для небольшой внутреннйе сети (5-7 тыс. сайтов). spider, crawler и indexer (с безабразным расчетом релевантности) написал, нашел марфологический словарь (130 тыс. слов).

Осталось разобраться, как это всё должно работать :) Чёткой концепции у меня в голове пока нет.

I
На сайте с 26.05.2001
Offline
64
#3

вообще-то все это делают опенсорсные поисковики на базе sql, mnogosearch, dataparksearch, aspseek.

INick:
Спасибо за ссылки, но там как-то в общих чертах... Короче, того, что мне нужно, я так и не нашел.
Я пишу поисковик для небольшой внутреннйе сети (5-7 тыс. сайтов). spider, crawler и indexer (с безабразным расчетом релевантности) написал, нашел марфологический словарь (130 тыс. слов).
Осталось разобраться, как это всё должно работать :) Чёткой концепции у меня в голове пока нет.
I
На сайте с 30.03.2006
Offline
1
#4

Может быть. Но охото чего-то своего, и чтобы постепенно его совершенствовать. Думаю пойдет в зачёт преддипломной практики. Да и MySQL я не жалую, буду пользовать Oracle.

I
На сайте с 26.05.2001
Offline
64
#5

Ну так основная идея такая, что раскладывание всего этого по реляционным таблицам идея заведомо не очень хорошая, но посмотреть структуру базы можно в mnogosearch.

А в принципе, сложностей быть не должно таблица

words:

word_id

word

таблицы

urls:

url_id

url

таблица связей

url_words

url_id

word_id

pos

I
На сайте с 30.03.2006
Offline
1
#6

Может лучше так?

words:

word_id

word

GROUP_ID

urls:

url_id

url

PAGES:

url_id

page_id

page_url

url_words

url_id

GROUP_ID

RELEVANCE

---

Здесь GROUP_ID для объединения слов в группу - для морфологического поиска; PAGES - описывает все страницы с одной главной url (из таблицы urls) - чтобы выдавать только одну самую релевантную страницу сайта; RELEVANCE - чтобы учитывать title, description и "жирность написания"...

Как идея?

I
На сайте с 26.05.2001
Offline
64
#7

не бывает одной, главной страницы.

в смысле она бывает, но она редко бывает релевантной

ЗодчийТеней
На сайте с 13.02.2006
Offline
11
#8
INick:
небольшой внутреннйе сети (5-7 тыс. сайтов).

если не секрет, что это за внутренняя сеть с таким количеством сайтов? это не один сервер по объемам

Я, однако, не скажу, что все иллюзии или бред нашего ума нужно называть сумасшествием. Эразм Роттердамский "Похвала глупости".
I
На сайте с 30.03.2006
Offline
1
#9

Для itman: Главная страница здесь, чтобы идентифицировать сайт. Например: forum.searchengines.ru - главная, а остальные - вида: forum.searchengines.ru/showthread.php?t=43850. Это чтобы выдавать пользователю не несколько релевантных страниц одного сайта, а одну самую релевантную.

Для ЗодчийТеней: это городская сеть и серверов в ней много.

ЗодчийТеней
На сайте с 13.02.2006
Offline
11
#10
INick:
Это чтобы выдавать пользователю не несколько релевантных страниц одного сайта, а одну самую релевантную.

не совсем понял вашу логику, вы хотите страницы отвечающие поисковому запросу но принадлежащие одному сайту исключить оставив одну наиболее релевантную? или хотите сгруппировать их?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий