Ich habe eine Suchfunktion mit Lucene.Net implementiert. Der Index enthält britische akademische Qualifikationen, einschließlich "A Level".Lucene.Net - Wie behandelt man eine durch Leerzeichen getrennte Phrase als einzelnes Token?
Ich möchte, dass die Benutzer in der Lage sind, mit dem Ausdruck "A Level" zu suchen, aber mit dem Standard Analyzer wird das "A" als Stoppwort entfernt und daher nur "Level" indexiert/gesucht .
Was ist meine beste Option, um dies zu umgehen? Ich schätze, ich muss irgendwie "A Level" zu "A-Level" oder ähnlichem durch Erstellen eines benutzerdefinierten Analysators tokenisieren.
Ist dies der beste Ansatz?
Edits:
Beachten Sie, dass will ich möchte nicht die ganze Suche eine Phrase Abfrage sein. d. h. in meinem Suchfeld möchte ich, dass der Benutzer < "A Level" AND Englisch Maths Physics eingeben kann und dies würde jedes mit "A Level" und entweder Englisch Mathe oder Physik zurückgeben. Frage aktualisiert, um dies zu reflektieren.
Ich würde speziell wie die Verwendung von ‚A‘ zu halten als ein Stoppwort in allen Fällen appart von ‚Stufe A‘
Die Phrase ‚eine Ebene‘ ist nicht in einem eigenen spezifischen Bereich, ist es in ein freies Textfeld, das die Phrase enthalten kann.
Aber ich will nicht wollen, die ganze Suche eine Phrase Abfrage sein. d. h. in meinem Suchfeld möchte ich, dass der Benutzer in der Lage ist, <"A Level" AND English Maths Physics> einzugeben, und dies würde jedes mit "A Level" und entweder Englisch Mathe oder Physik zurückgeben. Frage aktualisiert, um dies zu reflektieren. –
@Gareth D - siehe meine Bearbeitung – Dewfy
@Dewfy - Aber bleibt das Problem immer noch? d. h., das "A" in "A Level" wird vom Standardanalysator als Stoppwort entfernt, was dazu führt, dass die Phrasenabfrage alle Instanzen von "level" anstelle von "A Level" zurückgibt. –