====== Gaze DB ====== ===== Ziele ===== * Unabhängigkeit * Gezielte Suchfunktionen * Erweiterbarkeit / Flexibilität * Stabilität * Geschwindigkeit!!! * Möglichkeit zur Kommunikation mit KI Schnittstellen und Algorithmen * Komplexere Distanzberechnung zu ermöglichen * Ersparen von Zeit bei der Typ-Konvertierung ===== Anforderung ===== * Einfache kommunikation zwischen Indexer, Frontend, Http Server * Intelligente Indexierung * Kompression??? * Intelligente Speicherverwaltung ===== Funktionen ===== **filterBy()** * Ähnlichkeit über ID * Ähnlichkeit über übermittelten Daten (Features) für Upload * Farbe * Form * Preis * Marke * Kategorie * … Die Filterung soll ein Standardgerüst bekommen, aber flexible anpassbar sein, um weitere Filterkriterien zu ermöglichen. Z.B. wenn ein Kunde das Filtern nach „Shop“ haben will (möglich bei Produktsuchmaschinen). Gewichtung der einzelnen Blöcke (Farbe, Form) soll dynamisch anpassbar sein. **manhattanDist()** Berechnung einer Manhattan-Distanz **euclidDist()** Berechnung des Euklidischen Abstands **hammingDist()** Berechnung der Hamming-Distanz **sortByDistAsc()** Sortierung der Ergebnisse nach Ähnlichkeit aufsteigend **sortByDistDesc()** Sortierung der Ergebnisse nach Ähnlichkeit absteigend **Weitere??** ===== Ablauf ===== //Vorschläge sind willkommen!!!!// **Idee 1 (Java oder C++):** Compiler auf Indexer, holt Daten aus Mongo und Compiliert dies als Klasse → an Frontend. Frontend hat ein Server der die Klasse liest, im Speicher hält und die Berechnungen durchführt und Classen wieder entfernt, wenn eine neue vorhanden ist. Die Klasse enthält die Daten eines Kunden für die Suche. PHP kommuniziert per curl mit dem eigenem Server. **Idee 2 (C++ Phyton):** Compiler auf Indexer, holt Daten aus Mongo und Compiliert dies als Klasse → an Frontend. Frontend nutzt ein Http-Server und Phyton um mit der compilierten Klasse zu kommunizieren. Die compilierte Klasse wird für die Suche verwendet. Rückgabewerte werden direkt über Phyton und den Http-Server zurückgegeben als Json oder CSV. **Idee x:** … ===== Offene Fragen: ===== * Wie soll die Indizierung durchgeführt werden? * Wie ist der Speicherbedarf? * Höchste Parallelisierung die möglich wäre? * Make or Buy? * Wie soll der Datenaustausch stattfinden? * … ===== Doc Anhang ===== [[dokuwiki/lib/exe/fetch.php?media=gaze_db.docx|gaze_db.docx]]