Tobi: Kombinierte DB und Indexing Service Suche

Hallo zusammen,
ich moechte eine Suchfunktion erstellen, die pdf Dokumente Volltext durchsucht und gleichzeitig Datensaetze einer DB mit Metainformationen zu diesen pdf files.

Bisher habe ich zwei Suchfunktionen:

  • eine, die die Meta DB durchsucht (Access 2000 DB, ASP/VBScript) -  in der DB ist auch der Link zu dem entsprechenden pdf file gespeichert.
  • eine fulltext suche, die die pdf files mit Hilfe von Indexing Service durchsucht. (Win2000)

Meine Idee ist, diese Suchfunktionen irgendwie zu kombinieren, sodass die pdf files und die jeweils dazugehoerigen dazugehoerigen Metainformationen durchsucht werden und >ein< Link (zum Datensatz mit Link zum pdf Dokument) auf der Search results seite angezeigt wird....Jemand eine Idee wie ich das hinkriegen koennte?

Beziehung datensatz zu pdf file:
Datensatz <----1:1-----> pdf file

(Ich moechte natuerlich nicht die pdf files in der DB ablegen, sondern nur einen Link...)

Fuer Anregungen waere ich sehr dankbar, habe keinen Plan wie ich das realisieren koennte....

Gruss,
Tobi

  1. Moin Moin !

    Beziehung datensatz zu pdf file:
    Datensatz <----1:1-----> pdf file

    Was will mir das sagen? Für jede PDF gibt es genau einen Datensatz und für jeden Datensatz genau eine PDF. Soweit ist das klar.

    Heißt das auch, daß im Datensatz der Dateiname der PDF-Datei abgelegt ist, oder aus Daten des Datensatzes der Dateiname der PDF-Datei abgeleitet werden kann?

    Wenn das nicht der Fall ist, rüste es nach.

    Weg 1: PDFs werden nach Datensatz-IDs umbenannt und in ein Sammelverzeichnis gelegt.
    Weg 2: PDF-Dateiname wird Teil des Datensatzes.

    Meine Idee ist, diese Suchfunktionen irgendwie zu kombinieren, sodass die pdf files und die jeweils dazugehoerigen dazugehoerigen Metainformationen durchsucht werden und >ein< Link (zum Datensatz mit Link zum pdf Dokument) auf der Search results seite angezeigt wird....Jemand eine Idee wie ich das hinkriegen koennte?

    Schiebe die Sucheingabe in beide Suchen, lasse Dir die Ergebnisse geben, führe sie in einer Liste zusammen, gebe eine Liste mit Links aus, die schließlich die PDFs ausliefern.

    Alexander

    --
    Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
    1. Tach auch,

      Heißt das auch, daß im Datensatz der Dateiname der PDF-Datei abgelegt ist, oder aus Daten des Datensatzes der Dateiname der PDF-Datei abgeleitet werden kann?

      Ja, genau das heisst es: Datensaetze haben eindeutigen Code (in Meta DB), Name der pdf files besteht aus: Code.pdf

      Schiebe die Sucheingabe in beide Suchen, lasse Dir die Ergebnisse geben, führe sie in einer Liste zusammen, gebe eine Liste mit Links aus, die schließlich die PDFs ausliefern.

      Hmmm...dazu habe ich Fragen:
      1. Wie fuehre ich eine Suche in einer DB und Indexing Service aus? (ziemlich verschieden!) Einfach beide hintereinander durchsuchen?
      2. Ok. dann habe ich Recordsets mit den Results der Suche. Wie fuehre ich diese Listen zusammen? Irgendiwe so(???):
      Checke Dateinamen der pdf Datei in Fulltext Search Results (nur darueber laesst sich die Datei identifizieren, da Scanqualitaet und OCR ziemlich schlecht sind) - dann habe ich einen eindeutigen Index fuer die Meta DB....und dann wieder eine Abfrage der Meta-DB mit diesen Indexcodes? (Erscheint mir reichlich kompliziert...)

      Hast Du noch andere Ideen?

      Gruss,
      Tobi

      1. Moin Moin !

        Hmmm...dazu habe ich Fragen:

        1. Wie fuehre ich eine Suche in einer DB und Indexing Service aus? (ziemlich verschieden!) Einfach beide hintereinander durchsuchen?

        Genau.

        ErgebnisListeDB = Suche_in_der_DB(suchanfrage)
        ErgebnisListeIndex = Suche_im_Indexing_Service(suchanfrage)

        Ergebnis = Vereinigungsmenge ( ErgebnisListeDB , ErgebnisListeIndex )

        Du kannst auch erstmal alle Ergebnisse raussuchen, die in beiden Listen vorkommen. Dann packst Du beide Listen in eine neue Liste, und löscht dann die doppelten Ergebnisse.

        In Perl (ist wohl nicht ganz Dein Ding, schätze ich) geht das noch anders, über ein assoziatives Array (hash), dabei geht (ohne weitere Tricks) allerdings die Sortierung der Ergebnisse verloren:

        @listedb=dbsuche($suchanfrage);
        @listeindex=indexsuche($suchanfrage);
        %alle=();
        foreach $element (@listedb) {
          $alle{$element}=1;
        }
        foreach $element (@listeindex) {
          $alle{$element}=1;
        }
        @ergebnis=keys %alle;

        1. Ok. dann habe ich Recordsets mit den Results der Suche. Wie fuehre ich diese Listen zusammen? Irgendiwe so(???):
          Checke Dateinamen der pdf Datei in Fulltext Search Results (nur darueber laesst sich die Datei identifizieren, da Scanqualitaet und OCR ziemlich schlecht sind) - dann habe ich einen eindeutigen Index fuer die Meta DB....und dann wieder eine Abfrage der Meta-DB mit diesen Indexcodes? (Erscheint mir reichlich kompliziert...)

        Ja, mir auch. Siehe oben. Willst Du unbedingt bei der Index-Teilmenge auch Ergebnisse aus der Meta-DB anzeigen, oder reicht es Dir aus, eine Liste aller passenden PDFs zu bekommen?

        Hast Du noch andere Ideen?

        Klar: Such Dir einen Externen, der den Job übernimmt, und verklag ihn anschließend, weil es nicht so funktioniert, wie Du es haben willst. ;-)

        Alexander

        --
        Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
        1. Tach auch,

          ErgebnisListeDB = Suche_in_der_DB(suchanfrage)
          ErgebnisListeIndex = Suche_im_Indexing_Service(suchanfrage)

          Ergebnis = Vereinigungsmenge ( ErgebnisListeDB , ErgebnisListeIndex )

          Du kannst auch erstmal alle Ergebnisse raussuchen, die in beiden Listen vorkommen. Dann packst Du beide Listen in eine neue Liste, und löscht dann die doppelten Ergebnisse.

          Ok. Idee ist klar. Aber Perl ist wirklich nicht mein Ding, wuerde es gerne in VBSkript loesen. Ich glaube, ich mache es so aehnlich:
          Ich packe die Recordsets (nur die eindeutigen Codes) jeweils in Arrays und bilde die Vereinigungsmenge der Arrays (keinen Plan wie ich das mache, aber ich werde mal einen neuen Thread starten... ;o))

          Und dann habe ich eine Liste von Indizes, die ich dann aus der DB ausgeben lasse....bei den Datensaetzen ist dann sowieso ein Link zur PDF Datei und so habe ich dann praktisch DB und PDF File fulltext durchsucht....

          Mir kommt gerade in den Sinn, dass ich den Kerl lieber ueberzeugen sollte, dass er so eine Funktion nicht wirklich haben will....;o)

          Klar: Such Dir einen Externen, der den Job übernimmt, und verklag ihn anschließend, weil es nicht so funktioniert, wie Du es haben willst. ;-)

          Das wuerde auch das ganze Problem loesen...obwohl...ein bisschen in der Gegend rumklagen wuerde schon Spass machen...;o)

          Gruss & vielen Dank,
          Tobi