Ich untersuche derzeit mit sha1 Hashing, die in MS SQL-Server als Binär (20) gespeichert werden. Betrachtet man die derzeit verfügbaren Datentypen in Solr 4.x, ist der einzige, der groß genug erscheint, binär. Ich bin jedoch unsicher, ob die Verwendung von binary als eindeutiger Schlüssel eine gute Idee ist. Außerdem werden wir in naher Zukunft von Solr 4.x Standalone auf Solr 6.x Cloud umsteigen.Solr 4.x: Sollte ich binary als uniquekey verwenden?
Antwort
Per bester Praxis der eindeutige Schlüssel sollte einen kurzen einzigartigen String (siehe Java UUID zum Beispiel) sein. Binär als eindeutigen Schlüssel zu verwenden, ist keine gute Idee oder empfohlen. Eine tragfähige Lösung allerdings für Ihr Problem kann in this page von Solr Dokumentation:
Cryptographic Hash
Ein kryptographischer Hash-Algorithmus als die Schaffung N sehr Zufallsbits aus den Eingangsdaten gedacht werden kann . Der MD5-Algorithmus erzeugt 128 Bits. Dies bedeutet, dass 2 Eingabedatensätze eine Chance von 1 in 2^128 von haben und dasselbe MD5 erstellen. Es gibt einen Standardausdruck von diesem als 32 Hexadezimalzeichen. RFC-1321. Mehrere MD5 Digest-Algorithmen Pakete für verschiedene Sprachen folgen nicht diesem Standard. Der UUID Standard enthält immer die Zeit bei der Erstellung der UUID, die einige der oben genannten Anwendungsfälle ausschließt. Sie können die Uhr Anforderung betrügen und ignorieren. Am besten ist es, das UUID-Text-Format zu verwenden: 550e8400-e29b-41d4-a716-446655440000 statt 550e8400e29b41d4a716446655440000. (Sie werden viele dieser Schlüssel lesen.) Ein Vorteil bei der Verwendung eines crypto-generierten eindeutigen Schlüssels ist, dass Sie eine zufällige Teilmenge von Dokumenten über Platzhalter auswählen können. Wenn die UUID-Daten als Zeichenfolge im 32-Zeichen-RFC-Format 'd3adbe3fdeadb3e4deadbee4deadb3ef' gespeichert sind, wird die Abfrage "ID: a *" eine zufällige 1/16 des gesamten Dokumentsatzes auswählen. "id: aa *" wählt 1/256 des Dokumentensatzes aus, wiederum sehr zufällig. Statistische Analyse und Daten Extraktionsprojekte können dies verwenden, um kleine Teilmengen statt den gesamten Index zu gehen.
Derselbe Ansatz funktioniert gut mit jeder Version von Solr.
- 1. SOLR: Dokument fehlt obligatorisch uniqueKey Feld: ID
- 2. Solr 4 - fehlt Pflichtfeld: Uuid
- 3. Warum sollte ich operator.itemgetter (x) anstelle von [x] verwenden?
- 4. Solr-Facetten als Filter verwenden
- 5. Ist es möglich Solr UniqueKey Typ "String" auf andere Typen in Apache Solr zu ändern
- 6. Apply solr 4 schema to solr 6
- 7. Welcher Fenstermanager sollte ich als Beispiel verwenden?
- 8. org.apache.solr.common.SolrException: Dokument fehlt obligatorisch uniqueKey Feld: ID
- 9. Sollte ich Fremdschlüssel verwenden?
- 10. eine Binary als Parameter
- 11. konfigurieren Feldanalyse-Handler - Solr 4
- 12. Sollte ich Bootstrap verwenden?
- 13. Wie sollte ich meine Solr filterCache, FirstSearcher und NewSearcher konfigurieren?
- 14. Sollte ich jQuery.inArray() verwenden?
- 15. Sollte ich jQuery.each() verwenden?
- 16. Was sollte ich wissen bevor ich Apache solr starte?
- 17. Wie kann ich dieselben Einstellungsfenster für alle Android-Versionen von 2.X bis 4.X verwenden?
- 18. Binary (Bild) -Daten Zwischenablage (OS X)
- 19. Solr als Hauptsuchmaschine, Redis als Autocomplete-Engine
- 20. Sollte ich Threads oder mehrere Prozesse verwenden?
- 21. Sollte ich Laravel Middleware verwenden?
- 22. Welches JSObject sollte ich verwenden?
- 23. Winkelversion 4.x Tabellenzeilenkomponente
- 24. Mysql. Sollte ich ID verwenden?
- 25. Microsoft Reporting Services. Sollte ich Webservices als Datenquelle verwenden?
- 26. Wie sollte ich Controller als Syntax mit eckigen Direktiven verwenden?
- 27. Sollte ich GUID oder IDENTITY als Thread-Nummer verwenden?
- 28. Sollte ich neuere Plugin-Versionen als Standard verwenden?
- 29. In welcher Situation sollte ich _ als Parameter in swift verwenden
- 30. Kann/sollte ich YAML als Payload im RESTful Webservice verwenden?
Wir beide MS SQL Server & Solr 4.x verwenden (derzeit standalone aber SolrCloud bewegen). Ich benutze den sha1 Hashing Algorithmus, um Duplikate zu vermeiden (Also die Verwendung von solr oder sql zu gen uuid ist out ... obwohl ich nicht wusste, dass ich die Clocking Komponente in Java entfernen könnte, die den gleichen Hashwert mit der gleichen Eingabezeichenfolge (?) Und wir verwenden Java für unsere Web App. Was ich brauchte: 1. Java vergleicht Solr Feld und MS SQL Spalte 2. Solr vergleicht Solr Feld und MS SQL Spalte auf Datenimport Leider MS SQL hashbytes() gibt varbinary zurück (20). – BillS
Was ich getan habe, war Apache-Codec DigestUtils.shaHex ("einige Zeichenfolge"), um einen eindeutigen Hex-String-Schlüssel zu erstellen, der der Primärschlüssel in SQL und der eindeutige Schlüssel in Solr ist. Je mehr ich darüber nachdachte Ich habe mich nicht wohl gefühlt, binär als Schlüssel in solr zu verwenden. Danke für die Hilfe – BillS