Хэширование слов

[Удален]
#51
Как писал lagif
Artisan,
На первых страницах треда объяснялось зачем - чтоб при индексации не дергать какие-нибудь БД для сопоставления слову(словоформе) уникальный идентификатор. Получается гораздо быстрее, если у нас есть какая-нибудь спец-функция.

Что же до количества слов, то реально выходит, что в словаре будет храниться около 500 тыс. записей (несловарные слова, английские и русские).

Простое и банальное решение, весь словарь грузить в память. Размер позволяет. Скорость работы с памятью в сотни раз быстрее, чем с винтом.

Artisan
На сайте с 04.03.2005
Online
375
#52
Как писал Maxim Golubev
Простое и банальное решение, весь словарь грузить в память. Размер позволяет. Скорость работы с памятью в сотни раз быстрее, чем с винтом.

И при этом использовать двоичный поиск в массиве без всякого хэширования.

2^19 = 524288

То есть за 20 простых сравнений слово будет найдено что быстрее чем вычислить хэш функцию и потом разбираться с совпадениями.

www.leak.info / ДАРОМ линки конкурентов и забытых доменов
lagif
На сайте с 15.12.2004
Offline
30
#53

В каком массиве? Тут поиск будет по слову, а это дольше, чем по идентификатору, разве нет?

И нет разницы, как искать - хоть дихотомией, хоть прямым перебором. Все равно дольше, чем в БД по ключу.

Это тоже пройдет...
Artisan
На сайте с 04.03.2005
Online
375
#54
Как писал lagif
В каком массиве? Тут поиск будет по слову, а это дольше, чем по идентификатору, разве нет?
И нет разницы, как искать - хоть дихотомией, хоть прямым перебором. Все равно дольше, чем в БД по ключу.

@---,---`-----

Массивов может быть несколько для каждой длины слова отдельно что позволит как лучше использовать память при этом ускоряя поиск и обновление так возможно и обойтись 16 бит идентификаторами для слов при этом используя длину слова в качестве неявного расширения пространства идентификаторов. А если для Вашей задачи достаточно скорости последовательного поиска то словарь можно даже сжать причем намного плотнее чем обычный текст.

lagif
На сайте с 15.12.2004
Offline
30
#55

Artisan,

Cпасибо. Я над этим думала. Это, на мой взгляд, половинчатый выход из положения. Подумаю еще - обязательно расскажу, что придумала.

p.s. Цветок, надо полагать, к празднику. Спасибо!

[Удален]
#56
Как писал lagif
Artisan,
Cпасибо. Я над этим думала. Это, на мой взгляд, половинчатый выход из положения.

Если не секрет, над чем работаете ? Новый поисковик ?

lagif
На сайте с 15.12.2004
Offline
30
#57

Maxim Golubev, Вроде уже рассказывала. Пока все, что я делаю - проба сил, набивание шишек и прочие неприятные вещи века.

[Удален]
#58
Как писал lagif
Maxim Golubev, Вроде уже рассказывала. Пока все, что я делаю - проба сил, набивание шишек и прочие неприятные вещи века.

Тогда у индексатора есть более серьёзный камень преткновения, на который уходит значительно больше времени и ресурсов. Это часть обновления самого индекса на винчестере, особенно если у вас координатный индекс.

lagif
На сайте с 15.12.2004
Offline
30
#59

Maxim Golubev,

Все верно. Поиск идет по т.н. "обратному индексу". Прямой хранить, наверное, придется.

Artisan
На сайте с 04.03.2005
Online
375
#60
Как писал lagif
Artisan,
Cпасибо. Я над этим думала. Это, на мой взгляд, половинчатый выход из положения. Подумаю еще - обязательно расскажу, что придумала.

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

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