Dies kann als eine allgemeine Java-Frage betrachtet werden, aber zum besseren Verständnis verwende ich Lucene als Beispiel.Der Prozess, den Lucene Text in Tokenize
Sie können verschiedene Tokenizer in Lucene verwenden, um Text zu tokenisieren. Es gibt die abstrakte Haupt-Tokenizer-Klasse und dann viele verschiedene Klassen, die sie erweitern. Das Gleiche gilt für TokenFilter.
Nun scheint es, dass jedes Mal, wenn Sie ein Dokument indizieren möchten, ein neuer Tokenizer erstellt wird. Die Frage ist, da Tokeinzer nur eine Utility-Klasse ist, warum sollte man sie nicht statisch machen? Zum Beispiel kann ein Tokenizer, der alle Buchstaben in Kleinbuchstaben umwandelt, eine statische Methode haben, die genau das für jede Eingabe tut. Was ist der Sinn, ein neues Objekt für jeden zu indexierenden Text zu erstellen?
Eine Sache zu erwähnen - Tokeinzer hat ein privates Feld, das die Eingabe enthält, die es erhält, um Tokenize. Ich sehe nur nicht, warum wir es auf diese Weise speichern müssen, weil das Objekt direkt nach dem Tokenisierungsprozess zerstört wird und der neue Token-Text zurückgegeben wird. Das einzige, woran ich denken kann, ist Multi-Thread-Zugang vielleicht?
Vielen Dank!
Vielen Dank. Das macht jetzt sehr viel Sinn. – user431336