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!

You Might Also Like

4 bewährte KI-Suchlösungen für die Tarifverwaltung

Entdecken Sie, wie KI-Suchlösungen für das Tarifmanagement Einzelhändlern helfen, Margen und Kundenzufriedenheit...

Read More

KI-Agenten dominieren den Einkauf. Ist Ihre Website auf die KI-gestützte Suche vorbereitet?

Generative KI-Agenten wie ChatGPT definieren die Produktsuche neu. Erfahren Sie, wie Sie...

Read More

Vom Suchunternehmen zum praktischen KI-Pionier: Unsere Vision für 2025 und darüber hinaus

CEO Mike Sinoway gibt Einblicke in die Zukunft der KI und stellt...

Read More

Quick Links