mikek

Рейтинг
74
Регистрация
23.08.2001
CN-Software Ltd.
Как писал AlexA
Если говорить конкретно относительно данной задачи, то решение может быть в сохранении CRC основных форм слов данного текста. Тогда вам не придется "шерстить" файл, да и считать CRC. Достаточно будет сравнивать CRC форм слов запроса с CRC форм слов данного текста. Уф, вроде бы все.

Спасибо, идея хорошая. Отправлена в мозг на обработку :)


Хотя, отвлекаясь от постановки задачи, скажу, что и решение экономить память на 15Мб также мне не совсем понятно. А не пробовали память докупить? Если, конечно, сервер - ваш, если не ваш, то все-таки дешевле купить сервер и поставить у провайдера.

Сервер не мой. И тратиться я не собираюсь, так как для меня это скорее игрушка, нежели работа.

Как писал AlexA

Есть словарь, преобразованный через CRC32 (кстати, может словообразование досталось "бесплатно" для экономии объема словаря?), есть слова запроса, также в виде CRC32. И есть тексты документов, где надо найти эти слова запроса. Расходы на CRC32 при этом чересчур

Ну надо же, про меня вспомнили!!!

Большая часть веремни уходит не на расчет CRC, а на поиск CRC основной формы слова.

Я храню таблицу CRC-CRC в виде Б-дерева, его размер составляет около 15Mb. На одно слово требуется от 5 до 10 сравнений (а данные хранятся на диске), а таких слов на странице может быть 100 штук. Шерстить 15 мегабайтный файл не очень быстро. Держать его в памяти не имеет смысла, так как поиск производится не более 200 раз в день, а серверу есть чем занятся и без поиска.

Как писал AlexA

Другой вопрос, зачем вообще идти по пути CRC32-преобразованния словаря , но уже пройдено 2 года и назад вернуться, возможно, трудно.

Я в этой проблеме особо не разбирался. Какие есть другие варианты ?

Как писал AlexA

Простите, а как вы собираетесь разрешать коллизии?

никак.

У меня уже есть участок текста, который необходмо вывести в результатах, и я уже знаю, что найденное слово начинается, скажем, с 15-ой позиции.

Наример: поисковая фраза "тестовый поиск"

Выводится цитата:

"... в этом случае при тестовом поиске не было найдено требуемых документов, но при изменении поискового запроса ..."

Первое слово "тестовом" выделить не проблема, я точно знаю, что оно там есть, и начинается с 15 позиции.

Но проверить надо и остальные слова. Ведь еще надо выделить слово "поиске" и "поискового".

Словарь хранится в виде CRC32 основной формы, и CRC32 слова. По CRC32 слова я нахожу CRC32 основной формы и сраниваю с CRC32 основной формы слов из поисковго заросва - совпадает - выделяю.

Можеть есть можно выделить как-то без обращения к словарю ?

Господа, это не читать. Глупый был когда писал. Умирает буквально на паре гигов.

Я рекомендую почитать Кнута. У него целый том есть - Сортировка и Поиск (2-ой, если я не ошибаюсь) а особенно про Б-Деревья.

Я считал CRC32 слова и использовал их, как ключ в Б-Дереве, а слова я вообще не использовал.

Господа, это не читать. Глупый был когда писал. Умирает буквально на паре гигов.

Я рекомендую почитать Кнута. У него целый том есть - Сортировка и Поиск (2-ой, если я не ошибаюсь) а особенно про Б-Деревья.

Я считал CRC32 слова и использовал их, как ключ в Б-Дереве, а слова я вообще не использовал.

Всего: 76