MurmurHash3 für Java

Hintergrund

Ich brauchte eine wirklich gute Hash-Funktion für die verteilte Indizierung, die wir für Solr implementieren. Da sie für die Partitionierung von Dokumenten verwendet wird, musste sie von wirklich hoher Qualität sein (gut verteilt), da wir keine ungleichmäßigen Shards wollen. Außerdem muss sie plattformübergreifend sein, so dass ein Client diesen Hash-Wert auf Wunsch selbst berechnen kann, um vorherzusagen, welcher Knoten ein bestimmtes Dokument enthält.

MurmurHash3

MurmurHash3 ist eine der beliebtesten neuen Hash-Funktionen dieser Tage, da sie sowohl sehr schnell als auch von hoher Qualität ist. Leider ist sie in C++ geschrieben, und eine kurze Suche bei Google ergab keine geeignete, qualitativ hochwertige Portierung. Also habe ich mir 15 Minuten Zeit genommen, um die 32-Bit-Version zu portieren, da sie für kleine Schlüssel wie Dokument-IDs schneller sein sollte als die anderen Versionen. Es arbeitet in 32-Bit-Blöcken und erzeugt einen 32-Bit-Hash – mehr als genug für die Partitionierung von Dokumenten nach Hash-Code.

MurmurHash3-java

Es wäre schön, wenn wir verhindern könnten, dass andere dasselbe tun müssen. Da solche Dinge klein genug sind, habe ich sie einfach unter die Public Domain gestellt und auf github hochgeladen. Auf diese Weise kann jeder die Datei oder die Funktion einfach in sein Projekt kopieren und zusätzliche Abhängigkeiten und Lizenzprobleme vermeiden.

Hier ist der Code, kopieren Sie ihn!

Share the knowledge

You Might Also Like

Agentische KI und der Aufstieg von Protokollen: Wohin sich das Ökosystem als nächstes bewegt

m Jahr 2025 bewegen wir uns schnell auf ein neues Paradigma in...

Read More

MCP und Kontextfenster: Warum Protokolle eine größere Rolle spielen als größere LLMs

Im letzten Jahr hat sich das Rennen um die Erweiterung der LLM-Kontextfenster...

Read More

Wie MCP die KI-gestützte Suche und Entdeckung verbessern kann

In der Ära der generativen KI ist die Suche nicht länger ein...

Read More

Quick Links