Wie bei der Verwendung von n-Gramm approximate matching mit Solr?

Haben wir eine Datenbank der Filme und Serien, und wie die Daten stammen aus vielen Quellen unterschiedlicher Zuverlässigkeit, wir möchten in der Lage sein zu tun fuzzy-string-matching nach den Titeln der Episoden. Wir sind mit Solr für die Suche in unserer Anwendung, die Standard-matching-Mechanismen arbeiten auf word-Ebene, das ist nicht gut genug für kurze strings, wie Titel

Hatte ich n-Gramm Ungefähre matching in der Vergangenheit, und ich war sehr glücklich zu finden, dass Lucene (und Solr) unterstützt etwas, das out of the box. Leider, ich habe nicht in der Lage gewesen, um es richtig zu konfigurieren.

Davon aus, dass ich brauchen ein spezielles Feld, geben Sie für diese, so habe ich den
folgende Feld-Typ zu meinem schema.xml:

<fieldType 
   name="trigrams" 
   stored="true" 
   class="solr.StrField"> 
 <analyzer type="index"> 
   <tokenizer 
       class="solr.analysis.NGramTokenizerFactory" 
       minGramSize="3" 
       maxGramSize="5" 
       /> 
   <filter class="solr.LowerCaseFilterFactory"/> 
 </analyzer> 
</fieldType> 

geändert und das entsprechende Feld im schema zu:

<field name="title" type="trigrams" 
    indexed="true" stored="true" multiValued="false" /> 

Dies ist jedoch nicht so funktioniert, wie ich es erwartet habe. Der query-Analyse aussieht
korrekt, aber ich bekomme keine Ergebnisse, die macht mich glauben, dass
so etwas passiert bei index Zeit (dh. der Titel indiziert ist wie ein
Standard-string-Feld statt Trigramm-Feld).

Die Abfrage, die ich versuche, so etwas wie

title:"guy walks into a psychiatrist office"

(mit einem Tippfehler oder zwei) und es sollte mit "Mann geht zu einem Psychiater Office".

(Ich bin nicht wirklich sicher, ob die Abfrage korrekt ist.)

Darüber hinaus würde ich mag in der Lage sein, etwas zu tun, mehr sogar. Ich möchte
lowercace die Zeichenfolge, entfernen Sie alle Satzzeichen und Leerzeichen entfernen
Englische Stoppwörter und ändern Sie DANN die Zeichenfolge in Zeichen. Allerdings
die Filter werden nur angewendet, wenn Sie die Zeichenfolge wurde gesplittet...

Vielen Dank im Voraus für Eure Antworten.

  • Kannst du die Abfrage verwendest du?
  • Ich bearbeitet die Frage, um ein Beispiel-query.
Schreibe einen Kommentar