2016-07-06 4 views
0

Ich versuche, eine Suchleiste für meine Website zu implementieren, die Firebase als Datenbank verwendet. Es ist eine Reihe von Links zu bestimmten Bildern und Videos einbetten. Ich denke, ist es am besten, ein "Tag" -Feld für jeden Link zu haben, nach dem die lunr-Bibliothek fragen würde? Ich würde jedes Tag-Feld in eine Reihe von Strings aufteilen und der Lun würde nach jedem suchen?Javascript - Wäre 'lunr' eine brauchbare Suchbibliothek für Firebase?

Meine Datenbank hat das JSON-Format von:

{ "Featured" : { 
    "Link1" : { 
     "isEmbed" : false, 
     "priority" : 4, 
     "url" : "https://s3.amazonaws.com/hagshs8282n23/image7.jpg", 
     "tag" : nba nfl nhl mlb yahoo 
    }, 
    "Link2" : { 
     "isEmbed" : false, 
     "priority" : 3, 
     "url" : "https://s3.amazonaws.com/hagshs8282n23/image6.jpg", 
     "tag" : fire base stuff art cool 
    } } 

Ist dies eine langsame Art und Weise über die Suche nach Objekten zu gehen oder gibt es eine bessere Möglichkeit, darüber nachzudenken?

Alternativ dachte ich, dass, wenn eine Datei der Datenbank hinzugefügt wird, ich diese neue JSON-Struktur in einen Ordner im Home-Verzeichnis der Website (/ dir/oder etwas in der Art) exportieren und dann lunr lesen würde von diesem anstelle von Firebase. Wäre das schneller, da die Dateien lokal und nicht in Firebase wären, oder würde das keinen Unterschied machen?

Antwort

1

Wenn Sie eine Volltextsuche wünschen/brauchen, dann könnte lunr sicherlich einen Index für die Tags in diesen Dokumenten bereitstellen.

Wenn diese Links eine Beschreibung hätten, dann wäre lunr (oder eine andere Volltextsuche) eine gute Lösung, dann macht man wirklich eine full text search.

Tags, für mich sowieso, implizieren ein faceted search. Ich würde mir vorstellen, dass Sie eine endliche Liste dieser Tags haben würden, und Sie möchten dann herausfinden, welche Links genau diese Tags haben. Mit lunr könnte man etwas Ähnliches annähern, aber es gibt wahrscheinlich bessere Tools für den Job.

Wenn Sie jetzt eine große Liste mit Tags haben, möglicherweise mit einer Beschreibung, können Sie lunr verwenden, um Benutzern die Suche nach Tags zu ermöglichen. Verwenden Sie dann diese Tags, um die facettierte Suche auf Ihren Links durchzuführen.

Wie für die Verwendung von lunr mit Firebase, solange lunr Zugriff auf der Verbindungsdaten für die Indexierung hat, ist es egal, wo Sie die Dokumente tatsächlich speichern. Ich bin mit Firebase überhaupt nicht vertraut, also kann ich die Praktikabilität des Integrierens von lunr mit diesem Dienst nicht kommentieren, vielleicht kann jemand anderes Ihnen mit diesem Aspekt helfen.