2016-05-08 8 views
0

Ich brauche Solr für eine sehr schnelle Demo, ich habe eine MySql-Datenbank, die 37k Datensätze von Produkten online (wie Google Mail, Google Analytics) enthält, wo ich Informationen wie Name, Beschreibung und Schlüsselwörter habe .Basic Solr Query & Datenstruktur

gelang es mir, wie diese Struktur die Daten zu speichern

{   
    "keywords":"[\"music-streaming,streaming,internet-radio,audio-scrobbling\"]", 
    "description":"Last.fm is a music community website that offers personalized internet radio, using a recommendation system called \"Audioscrobbler\" to build a detailed profile of users based on their music tastes and interests. The service...", 
    "operatingSystem":"[\"Mac,Windows,Linux,Web/Cloud,Android,iPhone,WindowsPhone,KindleFire\"]", 
    "meta":"[\"Freemium\", \"Mac\", \"Windows\", \"Linux\", \"Web/Cloud\", \"Android\", \"iPhone\", \"...\", \"WindowsPhone\", \"KindleFire\"]", 
    "name":"Last.fm", 
    "id":39145, 
    "category":"audio-and-music"} 

Meta & Betriebssystem sind JSON-Arrays, während die übrigen Felder Textfelder sind.

Ich brauche in drei Dinge helfen

  1. Ist diese Datenstruktur (Schema) in Bezug auf Struktur, Suche und Indizierung ist gut?
  2. Ich möchte eine Abfrage erstellen wo zeigt relevante Produkte basierend auf Keywords?
  3. Wie kann ich die Felder Meta und Betriebssystem in Filter und nicht in Schlüsselwörter umwandeln?

Mein Endziel ist es, eine Suchleiste zu haben, in denen ein Benutzer in ein bestimmtes Schlüsselwort eingeben können dann filtern nach Betriebssystem und meta

Antwort

0

Die Felder mit mehreren Werten wahrscheinlich als getrennte Begriffe in ein indiziert werden sollen multiValued Feld, so dass Sie Felder mit einem bestimmten Wert abfragen/filtern können. d. h. indizieren Sie das Feld als "Mac", "Windows", "Linux", "Web/Cloud" usw. und nicht als einen einzelnen Wert mit allen eingebetteten Werten.

Abhängig von Ihren genauen Anforderungen können ähnliche/relevante Dokumente mit der Komponente MoreLikeThis gefunden werden.

Wenn die Felder ordnungsgemäß mehrwertig sind (wie sie sein sollten), können Sie generate a Facet on the field filtern (und dann fq verwenden, um die Ergebnismenge entsprechend zu filtern).

+0

Danke, Business-Logik weise das ist, was ich suche, technisch muss ich lernen, wie Sie implementieren, was Sie erwähnt haben. Danke für die Tipps –

+0

Sie können den 'dataimporthandler' verwenden, um Daten von MySql zu laden. https://cwiki.apache.org/confluence/display/solr/Uloading+Struktured+Data+Store+Data+mit+dem+Data+Import+Handler – darthsidious