Lieblingssendungen: Ausschlusskriterien

Bei Problemen mit der Bedienung von TV-Browser, bitte hier posten.
Antworten
georgy
Full Member
Beiträge: 53
Registriert: 14 Jan 2011, 22:34

Lieblingssendungen: Ausschlusskriterien

Beitrag von georgy »

Hallo,

ich bitte um Hilfe bei der Formulierung eines Ausschlusskriteriums bei den Lieblingssendungen. Das Problem ist Folgendes, stark vereinfacht und natürlich für den täglichen Gebrauch unrealistisch, es zeigt aber das Problem:

Angenommen, ich will als Lieblingssendung alle Sendungen angezeigt bekommen, die im Titel den String "ein" enthalten. (Wer's ausprobieren will, erhält schnell hunderte von Treffern. :-)

Das kann ich zwar mit den booleschen Variante (UND und ODER) hinbekommen. Wenn ich aber ausschließen möchte, dass Wörter, wo das "ein" nicht am Wortende steht, nicht angezeigt werden, dann kann ich das mit der Booleschen Variante aber nicht mehr hinbekommen (ich wüsste jedenfalls nicht, wie).

Also schwenke ich zu den viel mächtigeren regulären Ausdrücken um. Die Suchzeile lautet dann natürlich ".*ein.*" Soweitsogut.
Aber wie muss das Ausschlusskriterium aussehen?
- ".*ein\B.*" funktioniert nicht. (Wird \B überhaupt unterstützt? Habe keine Dokumentation dazu gefunden.)
- "ein\B" funktioniert auch nicht.
- Das "\B" ersetze ich durch das bei Java übliche "\p{Alpha}". Geht auch nicht.
- Den Backslash (\) verdoppeln hilft auch nicht.
- "ein[a-z]" und ".*ein[a-z].*" funktionieren auch nicht, würde aber im Fall, dass das "ein" am Ende des Titels steht, eh nicht helfen. Dann müsste man wahrscheinlich ".*ein([a-z].*|$)" schreiben.

Irnkwie fällt mir jetzt nix mehr ein. Was habe ich übersehen oder falsch gemacht? Unterstützen die Ausschlusskriterien evtl. gar keine regulären Ausdrücke? Wie kann ich das Problem in diesem Fall sonst lösen?

[tvbrowser-3.4.2, wahrscheinlich aber auch in allen älteren Versionen]

--Georg
ds10
Site Admin
Beiträge: 19117
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: Lieblingssendungen: Ausschlusskriterien

Beitrag von ds10 »

Also wenn ich dich richtig verstehe, dann möchtest du nach (in simpler Suche ausgedrückt) *ein suchen.
Als regulärer Ausdruck müsstest du dann nach .*ein\b suchen. Das wird Wörter wie z.B. Siebenstein oder allein finden, aber z.B. nicht einmal. Umgekehrt würde ein regulärer Ausdruck \bein.*, Wörter wie z.B. einmal, eine finden, aber nicht allein oder Siebenstein.

Die Verwendung von regulären Ausdrücken bei Java ist beschrieben unter:
https://docs.oracle.com/javase/7/docs/a ... ttern.html
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: Lieblingssendungen: Ausschlusskriterien

Beitrag von Sheldon2012 »

Hi,

natürlich führen, wie immer, viele Wege nach Rom! :)

Du kannst z. B. eine Filterkomponente "Meine_Filterkomponente" vom Typ "Schlüsselwort" anlegen.
Dort verwendest Du dann den regulären Ausdruck ".*ein\b" (ohne Anführungszeichen !!!).
Der leifert Dir alle Sendungen, die auf "ein" enden.

Die Option "Wo suchen" setzt Du auf "Nur im Titel"

Mit dieser Filterkomponente erzeugst Du dann einen Filter "Mein_Filter" mit der Kompostion

NICHT
Meine_Filterkomponente

Nun erzeugst Du im Expertenmodus eine Lieblingsendung mit diesem Filter.

Dann enthält diese Liebingsendung alle diejenigen Sendungen, die nicht mit "ein" enden.

Gruß

Shelcon
"
georgy
Full Member
Beiträge: 53
Registriert: 14 Jan 2011, 22:34

Re: Lieblingssendungen: Ausschlusskriterien

Beitrag von georgy »

Danke, die Idee ist mit den Filterkomponenten hatte ich noch nicht berücksichtigt. In der Praxis wird das wahrscheinlich dennoch ziemlich unübersichtlich, weil dann viele einzelne Filterkriterien zu vielen einzelnen Lieblingssendungen "lose" (d.h. ohne direkten Kontakt zur eigentlichen Lieblingssendung) einfach so in der Gegend rumliegen. In meinem Fall habe ich ca. 50-70 Lieblingssendungen und zu jeder mindestens 5-10 derartige Filterkomponenten. Wer soll da nach 3 Jahren noch den Überblick haben? Ich hätte schon lieber alles zusammengehalten direkt bei der einzelnen Lieblingssendung und deren Ausschlusskriterien (die ggf. ziemlich lang werden).

Vielleicht hier nochmal ein etwas realistischeres Beispiel:
Ich suche eine Sendung, die den string "ein" irgendwo (nicht nur im Titel) enthält, aber nicht den Ausdruck "der\p{Alpha}" oder "die\p{Alpha}" oder "als\p{Alpha}". Das kann man natürlich zusammenfassen als "(der|die|als)\p{Alpha}".

Jetzt stelle man sich vor, ich hätte pro Lieblingssendung nicht nur 1 derartigen Ausdruck, sondern 5-10, und das, was ich als "der|die|das" beschrieben habe, sind nicht nur 3-buchstabige Wörter, sondern halbe Sätze - dann wird's schnell unübersichtlich.

Ich frage also nochmal, ob es irgendwie möglich ist, bei den Ausschlusskriterien reguläre Ausdrücke anzugeben, die vom tvbrowser dann auch richtig berücksichtigt (also als Ausschlusskriterium interpretiert) werden. Wenn ja, bitte mit kurzem nachvollziehbarem Beispiel; ich krieg es nicht hin.

--Georg
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: Lieblingssendungen: Ausschlusskriterien

Beitrag von Sheldon2012 »

Für eine komplexere Problemstellung würde ich Dir die Verwendung einer Filterkomponente vom Typ BeanShel empfehlen.
In dieser kannst Du beliebig viele reguläre Ausdrücke miteinander kombinieren und Du benötigst dann pro Lieblingssendung nur eine solche Filterkomponente. Das sollte langfristig auch übersichtlich sein, wenn Du die Filterkomponente und die Lieblingssendung jeweils gleich benennst. Darüber hinaus wäre dieser Ansatz zukünftig leicht zu erweitern.
georgy
Full Member
Beiträge: 53
Registriert: 14 Jan 2011, 22:34

Re: Lieblingssendungen: Ausschlusskriterien

Beitrag von georgy »

Danke! Die Sache mit der BeanShell werde ich mir mal näher ansehen; dazu muss ich mich aber erstmal einlesen.

--Georg
Sheldon2012
Plugin-Developer
Beiträge: 1206
Registriert: 25 Dez 2012, 07:35

Re: Lieblingssendungen: Ausschlusskriterien

Beitrag von Sheldon2012 »

Für die Erstellung von BeanShell-Filtern sind ein paar Grundkenntnisse in Java-Programmierung erforderlich. Hast Du damit Erfahrung?
Falls Du hier auf Probleme stößt, helfe ich Dir gerne. Schau einfach mal, ob Du damit klarkommst. Unter http://wiki.tvbrowser.org/index.php/BeanShell-Filter%20 findest Du ein paar Beispiele für BeanShell-Filter.

Wenn Du es möchtest und mir für Deinen Anwendungsfall ein realistisches Beispiel nennst, erstelle ich dir auch gerne ein Musterskript, das Du dann weiter verwenden und erweitern kannst. Hierfür würde ich die entsprechenden regulären Ausdrücke und die Properties der Sendungen (Titel, Beschreibung etc. ) benötigen, auf die diese anzuwenden sind.
Antworten