Lucene-Suche: Escape
-
Ich habe ein Problem mit dem Escapezeichen in lucene:
Laut Lucene-Dokumentation sollte ich eine Klammer im Suchstring mit Backslash und ( eingeben können. Das funktioniert nicht. Weder \( noch \( finden irgend einen Titel. -
@DetZwerg sagte in Lucene-Suche: Escape:
Ich habe ein Problem mit dem Escapezeichen in lucene:
Laut Lucene-Dokumentation sollte ich eine Klammer im Suchstring mit Backslash und ( eingeben können. Das funktioniert nicht. Weder \( noch \( finden irgend einen Titel.Nachtrag: Auch hier wurden Zeichen unterschlagen: Der zweite Eintrag sollte “noch *\(*” lauten.
-
@DetZwerg
Ja, die Suche scheint verbesserungswürdig zu sein. Die Folge\(
liefert keine Ergebnisse, die Folge\(3
dagegen schon. Letztere listet aber alle Einträge mit einer 3 und nicht nur die mit (3. -
@DetZwerg sagte in Lucene-Suche: Escape:
Ich habe ein Problem mit dem Escapezeichen in lucene:
Laut Lucene-Dokumentation sollte ich eine Klammer im Suchstring mit Backslash und ( eingeben können. Das funktioniert nicht. Weder \( noch \( finden irgend einen Titel.Das ist vollkommen richtig, da der gewählt Analyzer keine Suche nach special characters unterstützt.
-
Ich habe für das nächste nightly gerade eine Änderung gepushed die eine Suche nach special characters zulässt:
Der String\(S2024*
liefert korrekt alle Ergebnisse für Filme die im Titel(S2024
xxx stehen haben.@MenchenSued Das hatte nichts mit verbesserungswürdig zu tun sondern der Analyzer den quasi alle Codebeispiele nutzen unterstützt special characters nicht. Das findet man aber leider nicht wirklich einfach.
-
@DerReisende77 Die Version 39fd308 funktioniert mit Lucene gar nicht und liefert diverse Fehler.
. Failed to parse datum long string:
. Model filtering failed! -
@MenchenSued Mit welchem String? Der Screenshot wurde mit
39fd308f07c4430ca230384e1da1c7acc2e76213
erzeugt. -
@MenchenSued sagte in Lucene-Suche: Escape:
@DerReisende77 Die Version 39fd308 funktioniert mit Lucene gar nicht und liefert diverse Fehler.
. Failed to parse datum long string:
. Model filtering failed!Failed to parse datum long string ist eine Info beim Lesen der Filmliste und hat keine Auswirkungen auf Lucene Suche
-
@DerReisende77
Zumindest werden mit dieser Version keine Filme angezeigt, obwohl in der Statuszeile eine große Zahl steht. Auch kommt die Meldung zum Initialisieren der Suche nicht, dafür diese Meldungen. Model filtering failed! java.lang.IllegalArgumentException: A SPI class of type org.apache.lucene.analysis.TokenizerFactory with name 'whitespace' does not exist. You need to add the corresponding JAR file supporting this SPI to your classpath. The current classpath supports the following names: [standard] at org.apache.lucene.analysis.AnalysisSPILoader.lookupClass(AnalysisSPILoader.java:157) ~[MediathekView.jar:?] at org.apache.lucene.analysis.AnalysisSPILoader.newInstance(AnalysisSPILoader.java:140) ~[MediathekView.jar:?] at org.apache.lucene.analysis.TokenizerFactory.forName(TokenizerFactory.java:52) ~[MediathekView.jar:?] at org.apache.lucene.analysis.custom.CustomAnalyzer$Builder.withTokenizer(CustomAnalyzer.java:335) ~[MediathekView.jar:?] at org.apache.lucene.analysis.custom.CustomAnalyzer$Builder.withTokenizer(CustomAnalyzer.java:321) ~[MediathekView.jar:?] at mediathek.tool.LuceneDefaultAnalyzer.buildAnalyzer(LuceneDefaultAnalyzer.java:37) ~[MediathekView.jar:?] at mediathek.gui.tabs.tab_film.helpers.LuceneGuiFilmeModelHelper.<init>(LuceneGuiFilmeModelHelper.java:64) ~[MediathekView.jar:?] at mediathek.gui.tabs.tab_film.GuiFilme.lambda$loadTable$20(GuiFilme.java:746) ~[MediathekView.jar:?] at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131) ~[MediathekView.jar:?] at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:76) ~[MediathekView.jar:?] at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:82) ~[MediathekView.jar:?] at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute(ForkJoinTask.java:1726) [?:?] at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute(ForkJoinTask.java:1717) [?:?] at java.base/java.util.concurrent.ForkJoinTask$InterruptibleTask.exec(ForkJoinTask.java:1641) [?:?] at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507) [?:?] at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1489) [?:?] at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:2071) [?:?] at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2033) [?:?] at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187) [?:?]
-
@MenchenSued verstehe ich nicht bei mir geht es ohne probleme. kann es aber unter linux gerade nicht testen da ich auf dem sprung aus dem haus bin.
Hast Dumvn clean install
gemacht? -
@DerReisende77 sagte in Lucene-Suche: Escape:
mvn clean install
Ja
git pull export JAVA_HOME=/home/dirk/data/Entwicklung/jdk-22.0.2+9 mvn -version mvn clean install
-
@MenchenSued bin schon weg und werde mir das vor sonntag nicht ansehen können
-
@MenchenSued Hatte doch kurz Zeit und habe einen neuen commit gepushed der die SPI Funktion nicht mehr nutzt. Schau mal bitte ob es nun bei dir geht.
-
@DerReisende77
Funktioniert. Seltsam finde ich, dass sich ein Sternchen am Ende auswirkt, am Anfang aber weggelassen werden kann. Wäre mir aber egal, da ich Lucene normalerweise nicht nutze.
Eine Warnung bekomme ich noch:Nov. 02, 2024 11:09:36 AM org.apache.lucene.internal.vectorization.VectorizationProvider lookup WARNUNG: Java vector incubator module is not readable. For optimal vector performance, pass '--add-modules jdk.incubator.vector' to enable Vector API. .
-
@MenchenSued ja
--add-modules jdk.incubator.vector
muss noch als kommando zu Java hinzugefügt werden damit die Geschwindigkeitssteigerungen von Lucene greifen können ohne Warnung.