Учёт позиций слов

S
На сайте с 08.08.2006
Offline
12
1366

Добрый день.

Думал тут как ещё улучшить свой поиск по сайту и вспомнил, что у меня даже позиции слов не учитываются.

Фактически на сайте простой морфопоиск, который ищет с использованием нормальных форм. В табличке с индексом соответственно содержится id странички, id слова и его вес.

Как обычно реализуются индексы для того чтобы можно было учитывать расстояние между словами?

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

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

siegfried:
Добрый день.
Думал тут как ещё улучшить свой поиск по сайту и вспомнил, что у меня даже позиции слов не учитываются.

Фактически на сайте простой морфопоиск, который ищет с использованием нормальных форм. В табличке с индексом соответственно содержится id странички, id слова и его вес.

Как обычно реализуются индексы для того чтобы можно было учитывать расстояние между словами?
Приходите завтра, завтра будет! (http://itman666.livejournal.com)
S
На сайте с 08.08.2006
Offline
12
#2

Как релевантность в таком случае считать? чтобы попроще и не замедлить работу ( для рассчёта разницы позиций придётся джойнить таблицу индекса ещё раз )

I
На сайте с 26.05.2001
Offline
64
#3
siegfried:
Как релевантность в таком случае считать? чтобы попроще и не замедлить работу ( для рассчёта разницы позиций придётся джойнить таблицу индекса ещё раз )

.

Вариант 1. Берем достаточно длинную битовую матрицу, бит 128. разбиваем файл на 128 участков. b1 e1 b2 e2 ... b128 e128 одинаковой длины (за исключением последних, которые могут быть короче)

выставляем бит k в единицу если слово попадает в диапазон (b_k - d/2 , b_k + d/2). Потом пересекаем и считаем битики. Естественно получается весьма приближенно.

Вариант 2. Кладем в запись маленький блобик, куда в упакованном виде складываем позиции слова в документе. вместо блобиков можно varchar(255) .

S
На сайте с 17.10.2005
Offline
17
#4
siegfried:

Как обычно реализуются индексы для того чтобы можно было учитывать расстояние между словами?

Документ бьется на предложения. По умолчанию все слова запроса ищутся в одном предложении. Первая порция - все слова рядом. Дальше - с расстоянием. Вот это почитайте: http://romip.narod.ru/romip2005/09_mailru.pdf

pro-maker
На сайте с 08.12.2003
Offline
281
#5
statev:
Документ бьется на предложения. По умолчанию все слова запроса ищутся в одном предложении. Первая порция - все слова рядом. Дальше - с расстоянием.

А как учесть попадание в title страницы и внутренние ссылки по сайту на страницу?

S
На сайте с 17.10.2005
Offline
17
#6
pro-maker:
А как учесть попадание в title страницы и внутренние ссылки по сайту на страницу?

Title можно, например, как в этой работе: http://romip.narod.ru/romip2004/05_uis_russia.pdf

Текст ссылок - сначала посчитать их ранг, потом умножать ранг на релевантность текста ссылки. Итоговую сумму поместить в общую формулу расчета релевантности. Поскольку здесь речь идет о поиске по отдельно взятому сайту, то можно ранги не считать, а выставить принудительно. По шкале 1..10 для 1-й страницы - 10, для страниц 2-го уровня - 8 и т.п. Т.е. ввести собственное ранжирование документов.

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