Umkehrung von Program.getUniqueID()

Hier haben Plugin-Entwickler die Möglichkeit, sich auszutauschen.
Antworten
tvj
Junior Member
Beiträge: 20
Registriert: 02 Mai 2007, 20:16

Umkehrung von Program.getUniqueID()

Beitrag von tvj »

Hallo TV-Browser Entwickler,

ich versuche mich gerade an einer Integration von Lucene als Such-backend. Nachdem ich schon in einem anderen Projekt mit Lucene gearbeitet habe fällt der Anfang nicht so schwer...

Probleme bereite mir im Moment die Lucene Ergebnisliste wieder in ein Program[] zu übertragen. Als eindeutige ID eines jeden Programm habe ich die Ausgabe von Program.getUniqueID() mit in den Index gepackt, so dass mir zu meinem Glück jetzt nur noch die "Umkehrfunktion" fehlt, also eine Funktion mit folgendem Syntax:

Code: Alles auswählen

Program findProgramByID(String uniqueID)
Eine solche Funktion scheint es aber nicht zu geben. Gibt es alternative Möglichkeiten ein Programm eindeutig (als String) zu identifizieren und später wieder aufzulösen?

Gruß Jan
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: Umkehrung von Program.getUniqueID()

Beitrag von ds10 »

Sicher gibt es eine Möglichkeit, PluginManager.getProgram(String).
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
tvj
Junior Member
Beiträge: 20
Registriert: 02 Mai 2007, 20:16

Re: Umkehrung von Program.getUniqueID()

Beitrag von tvj »

Ah, danke das Puzzelteil hat mir noch gefehlt.
Damit funktioniert meine auf Lucene basierte Suchengine endlich.

Jan
Benutzeravatar
Siggi
Moderator
Beiträge: 2271
Registriert: 31 Dez 2003, 12:21
Wohnort: Doberlug - Kirchhain

Re: Umkehrung von Program.getUniqueID()

Beitrag von Siggi »

Hi,

wenn du was zum zeigen hast, immer zu.

Soll das als Plugin funktionieren?

Bis dann.
mfg Siggi

PS: Wer Fehler findet, darf Sie behalten!!! :-)
tvj
Junior Member
Beiträge: 20
Registriert: 02 Mai 2007, 20:16

Re: Umkehrung von Program.getUniqueID()

Beitrag von tvj »

Klaro wird das Ganze veröffentlicht. Ideal wäre es natürlich direkt im TV-Browser SVN. An wen muss ich mich denn wegen eines Accounts wenden?

Da ich mir nicht sicher war ob die Pluginschnittstelle alle notwendigen Methoden und Daten zur Verfügung stellt habe ich einfach direkt ein eigenes Package innerhalb des TV-Browser core angelegt.

Im Moment ist es mehr eine Technologie-Demo, d.h. vor dem Ausführen einer Suchanfrage wir erst der Index neu erzeugt (damit man mit die Indizierung schnell verändern kann).

Bisher binde ich meine Suchklasse über tvbrowser.core.plugin.PluginManagerImpl.createProgramSearcher() ein. Wenn type=SEARCHER_TYPE_KEYWORD wird mein LuceneSearcher verwendet anstatt des normalen RegexSearcher.

Gruß Jan
Benutzeravatar
Siggi
Moderator
Beiträge: 2271
Registriert: 31 Dez 2003, 12:21
Wohnort: Doberlug - Kirchhain

Re: Umkehrung von Program.getUniqueID()

Beitrag von Siggi »

Hi,

kannst du das als Patch uploaden?

Dann können sich die Admins / Programmierer das ansehen und einchecken.

Wenn die den Code für gut befinden bekommst du auch einen Account.

Bis dann.
mfg Siggi

PS: Wer Fehler findet, darf Sie behalten!!! :-)
Bananeweizen
Site Admin
Beiträge: 3353
Registriert: 09 Sep 2006, 22:45

Re: Umkehrung von Program.getUniqueID()

Beitrag von Bananeweizen »

Ich finde, das klingt prinzipiell nicht schlecht. Mich täte aber auch die Kehrseite der Medaille interessieren, d.h. welche zusätzlichen Abhängigkeiten und (Pi mal Daumen) Speicherplatz für Installation bzw. Speicherplatz für den Lucene-Index.

Sicherheitshalber auch nochmal eine Verständnisfrage: Damit wird nur ein Stichwortkatalog geschaffen, keine Datenbank, richtig? Mit einer einfach lesbaren DB der TV-Daten hätten wir nämlich (aufgrund der uns überlassenen Verwendungsrechte der TV-Daten) ein Problem.
tvj
Junior Member
Beiträge: 20
Registriert: 02 Mai 2007, 20:16

Re: Umkehrung von Program.getUniqueID()

Beitrag von tvj »

An Abhängigkeiten sehe ich nur die JAR-Datei von Lucene. Die hat im Moment ~800KB - vielleicht könnte man sie noch ein wenig reduzieren um einige nicht benötigte Klassen.

Mein aktueller Index hat ~1,5 MB für die 11 deutsche Hauptsender für die nächste Woche. Indiziert wurden alle Text und Integer-Felder derer ich über den FieldIterator habhaft werden konnte, sowie noch einige Felder, die man direkt über Getter-Methoden von Program auslesen kann.
Über die Indizierungsgeschwindigkeit kann ich aktuell nicht viel sagen - aber meiner Erfahrung sind die TV-daten so wenig, dass es sich wahrscheinlich noch nicht einmal lohnt die Indizierung über mehrere Threads zu parallelisieren. Wenn man die Indizierung am Ende des Online-datenupdates durchführt dürfte das kaum ein Benutzer geschindigkeitsmäßig merken.
BTW: Noch eine Verständlisfrage die mir schon lange stelle aber nie gefragt habe: Ließen sich beim online update auch schon bestehende Daten aktualisieren? Wenn ja wird das eingesetzt? In einem solchen Fall müsste man nämlich vorher wieder Elemente aus dem Index löschen, so dass die Aktualisierung etwas mehr Arbeit wäre.

Stichwortkatalog vs DB:
Ich dachte mir schon, dass dies ein heikler Punkt ist. Lucene ist prinzipiell in der Lage die Daten sowohl zu indizieren, als auch komplett zu speichern.
Dies lässt sich beim Indizieren für jedes Suchfeld angeben.
Im Moment habe ich so gearbeitet, dass nur der Titel, die uniqueID, das Datum und die Startzeit gespeichert werden. Dadurch wäre es vielleicht möglich die Ergebnisliste schon mit den Basisdaten zu füllen bevor der komplette Program-Datensatz geladen wurde (noch nicht implementiert).
Generell lässt sich aber die Anzahl der komplett gespeicherten (und damit auslesbaren Daten) bis auf die uniqueID reduzieren. Insofern sehe ich keine Probleme mit den Nutzungsbedinungen der Daten.

Ich werde mal einen Patch zusammenstellen und an Ticket http://tvbrowser.org:8080/jira/browse/TVB-243 hängen, so dass sich alle ein Bild machen können. Zur Integration wird es wohl noch ein wenig zu früh sein aber interessierte können sich schon einmal einen Überblick verschaffen.

Gruß Jan
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: Umkehrung von Program.getUniqueID()

Beitrag von ds10 »

tvj hat geschrieben:BTW: Noch eine Verständlisfrage die mir schon lange stelle aber nie gefragt habe: Ließen sich beim online update auch schon bestehende Daten aktualisieren? Wenn ja wird das eingesetzt? In einem solchen Fall müsste man nämlich vorher wieder Elemente aus dem Index löschen, so dass die Aktualisierung etwas mehr Arbeit wäre.
Die Daten werden immer komplett für einen gesamten Tag und Sender aktualisiert, wenn sich am Programm des Senders etwas geändert hat. Darüber werden die Plugins natürlich informiert, einmal dass die Daten gelöscht wurden und einmal dass neue Daten hinzugekommen sind. Das Ganze funktioniert über den TvDataBaseListener.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
tvj
Junior Member
Beiträge: 20
Registriert: 02 Mai 2007, 20:16

Re: Umkehrung von Program.getUniqueID()

Beitrag von tvj »

Danke mit den Informationen war es mir möglich meinen Lucene-IndexSucher so anzupassen, dass neue Daten automatisch indiziert werden.
Der Patch hängt wieder an Ticket TVB-243. So langsam funktioniert die Erweiterung schon ganz gut.

Nach folgenden Feldern kann gesucht werden:

actor (wird generiert aus actor_list)
additional_persons
age_limit
camera
channel
cutter
date
description
director
episode
film_URL
genre
info_bits
length
moderation
music
net_playing_time
number_of_episode
number_of_season
origin
original_episode
original_title
picture_copyright
picture_description
production_year
rating
repetition_of
script
short_description
showview_number
time
title
total_number_of_episodes

Wer es ausprobieren will, muss im Suchdialog auf "Term is a keyword"/"Stichwortsiche" umschalten und kann dann via feldname:suchstring die Suche durchführen.

Beispiele:

Suche die Tagesschau im Titel: Tagesschau
Suche die Tages* am Abend: tages* time:[2000 TO 2359]
Regisseur (Vorname oder Nachname) beginnt mit ge: director:ge*
usw.

Gruß Jan
Goop
Full Member
Beiträge: 68
Registriert: 23 Sep 2006, 22:58

Re: Umkehrung von Program.getUniqueID()

Beitrag von Goop »

Da ich auf der Suche nach einer Möglichkeit bin, im TV-Browser auch nach Showview-Nummern zu suchen (das scheint Out-of-the-box nicht zu gehen), bin ich auf diesen Thread gestoßen.

Ist dieses Plugin schon irgendwo verfügbar?
tvj
Junior Member
Beiträge: 20
Registriert: 02 Mai 2007, 20:16

Re: Umkehrung von Program.getUniqueID()

Beitrag von tvj »

Nein, da es kein Plugin ist, sondern ein Patch für TVBrowser selbst. Ein (deaktivierbares) Plugin scheint mir nicht der richtige Platz für einen zentralen Suchindex zu sein. Entweder die Funktion ist direkt im TV-Browser oder gar nicht.

Bisher war das Interesse an dieser Erweiterung aber eher sehr gering. Du kannst ja mal für das entsprechende Ticket voten...

http://tvbrowser.org:8080/jira/browse/TVB-243

Gruß Jan
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Re: Umkehrung von Program.getUniqueID()

Beitrag von bodo »

Goop hat geschrieben:Da ich auf der Suche nach einer Möglichkeit bin, im TV-Browser auch nach Showview-Nummern zu suchen (das scheint Out-of-the-box nicht zu gehen), bin ich auf diesen Thread gestoßen.

Ist dieses Plugin schon irgendwo verfügbar?
Show-View Nummern haben wir vor einiger Zeit aus dem TVB entfernt.
Goop
Full Member
Beiträge: 68
Registriert: 23 Sep 2006, 22:58

Re: Umkehrung von Program.getUniqueID()

Beitrag von Goop »

Entfernt?
Ok, vielleicht nicht in diesem Feld, ich meine die Möglichkeit nach einer Suche im Feld "Beliebige Informationen":

Bild

Würde das denn die Lucene-Suche dort finden? TVB findet das da nicht.
Antworten