2011-01-21 1 views
1

Я хочу ускорить поиск моего приложения, создав индекс контрольной суммы для своих строк.Хорошая контрольная сумма для ускорения поиска

Является ли CRC32 достаточно хорошим? Я не использую его для обеспечения безопасности. Так же, как способ представления строки как хэшированного (целочисленного/длинного) индекса.

ответ

2

Вы ищете хеш-код, а не контрольную сумму. CRC32 должен быть хорошим, хотя и не очень эффективным. Также посмотрите на Adler32 (используется zlib), который быстрее вычисляется.

Смотрите также Hash function

+0

См. Мой ответ выше. Это должно мне подойдет. – user432024

2

Вы пытаетесь изобрести колесо, или в данном случае hash table?

CRC32 предназначен для вычисления контрольных сумм, он не предназначен для быстрой хэш-функции, предназначен для обнаружения ошибок (изменений) в файлах. Четыре ваших потребностей, вы можете захотеть взглянуть на non-cryptographic hash functions.

+1

или использовать встроенный механизм поиска/БД, который делает все это плюс, имеет интерфейс запроса с OR/AND и т. Д. – gertas

+0

Фактически я использую распределенный кеш, который имеет возможности индексирования. Я загружаю свои записи Db в кеш. Когда я добавляю запись в кеш, мне нужно индексировать целочисленный хеш, а не исходное строковое значение. Гораздо быстрее нет? – user432024

+0

Использование Java, но если я понимаю, что myString.hashCode() может иметь коллизии? – user432024