Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   C# Intelligente Suche - websiten durchsuchen (https://www.delphipraxis.net/187994-intelligente-suche-websiten-durchsuchen.html)

marcooo 21. Jan 2016 19:36

Intelligente Suche - websiten durchsuchen
 
Hallo liebe Community,

Innerhalb meines Studiums habe ich die Aufgabe bekommen eine Software zu entwickeln, mit der es möglich sein soll folgendes Szenario zu ermöglichen:

Eine Software X wird innerhalb einer Abteilung eingesetzt und von verschiedenen Mitarbeitern betreut.
Seit längerer Zeit wurden dann sowohl firmeninterne Seiten, als auch externe (z.B. Fachforen) Internetseiten an verschiedenen Plätzen mit unterschiedlichen Informationen "erstellt".
Problem ist jetzt, durch die steigende Komplexität der eingeführten Software X entstehen immer mehr Userfragen, die alle über den Support / die Mitarbeiter laufen und so übermäßig und unnötig ausgelastet werden...
Diese Fragen könnten EIGENTLICH beantwortet werden, wenn User die Informationen an einer zentralen Stelle hätten...
Leider ist es nicht oder nur schwer möglich alles an einen Punkt zusammenzuführen...

Ziel ist es nun eine Software zu entwickeln, die angegebene "Quellen", wie z.b. das confluence von Atlassian, nach genau solchen Themen durchsucht und eine Liste wie die Google-Suche bereitstellt.
Je nach Übereinstimmung der eingegebenen Suchwörter sollen gute Ergebnisse oben und schlechtere weiter unten angezeigt werden.

Mein Ansatz war, dass interne Quellen prinzipiell leichter zu durchsuchen sind da z.T. API's vorhanden sind, die genutzt werden könnten.
Alternativ wäre es möglich auch die Suche über URL aufzurufen und das zurückgelieferte HTML-File auszuwerten.
Allerdings habe ich bei externen Seiten, sowie bei einigen internen Seiten, das Problem, dass ich an den dargestellten Inhalt quasi garnicht rankomme, da vieles über Javascript und AJAX nachgeladen wird und ich nicht so einfach ausgelesen werden kann...

Ich hoffe ich konnte mein Problem einigermaßen erklären und hoffe auf Hilfe um zumindest einen Ansatz zu finden =)

Eine mögliche Lösung wäre die Google Search Engine mit der 100 solcher Aufrufe am Tag kostenlos gemacht werden könnten.
Allerdings wird eine kostenlose Alternative benötigt, die ohne solche Limitierungen klar kommt.

Danke im Voraus =)

pesi 22. Jan 2016 08:20

AW: Intelligente Suche - websiten durchsuchen
 
Hallo Marco,

irgendwie werde ich das Gefühl nicht los, dass Ihr in Eurem Unternehmen eher ein Problem mit dem Thema "Knowledge-Management" habt und Ihr das Problem von einer ganz anderen Seite angehen solltet, nämlich Eure Informationen zu konsolidieren und an einem geeigneten Platz mit geeigneten Medien abzulegen (Dokus, EIN Forum, evtl. Videoanleitungen, etc.).
Das was Du beschreibst kommt mir SEHR bekannt vor, aber gottseidank haben wir hier in unserem Unternehmen so ein "Chaos" einigermaßen überwunden :-D Das beduete sicher Arbeit und Changemanagement aber es ist, meiner Meinung nach, sehr viel sinnvoller, zielführender und vor allem zukunftssicherer.

Grüß Peter

nahpets 22. Jan 2016 11:34

AW: Intelligente Suche - websiten durchsuchen
 
Zitat:

Zitat von pesi (Beitrag 1327797)
Hallo Marco,

irgendwie werde ich das Gefühl nicht los, dass Ihr in Eurem Unternehmen eher ein Problem mit dem Thema "Knowledge-Management" habt und Ihr das Problem von einer ganz anderen Seite angehen solltet, nämlich Eure Informationen zu konsolidieren und an einem geeigneten Platz mit geeigneten Medien abzulegen (Dokus, EIN Forum, evtl. Videoanleitungen, etc.).
Das was Du beschreibst kommt mir SEHR bekannt vor, aber gottseidank haben wir hier in unserem Unternehmen so ein "Chaos" einigermaßen überwunden :-D Das beduete sicher Arbeit und Changemanagement aber es ist, meiner Meinung nach, sehr viel sinnvoller, zielführender und vor allem zukunftssicherer.

Grüß Peter

Die Aufgabe ist aber letztlich, innerhalb des Studiums eine Suchmaschine zu schreiben.

Mein Vorgehen wäre:

Zuerst einmal klären, welche Systeme "angezapft" werden müssen.
Wo liegen ggfls. "feste" HTML-Seiten oder sonstige Textdateien, die ausgewertet werden müssen?
Welche Informationen können nur über eine Browser (URL) erreicht werden?
Gibt es noch weitere Quellen, wenn ja, wie sind sie erreichbar?

Anschließend prüfen, welche Quelle auf welchem Weg auswertbar ist.
Gibt es für mehrere Quellen identische Wege zur Auswertung...
Alles, was per JavaScript, Ajax oder sonstwie nachgeladen wird, hat irgendwo eine Quelle. Wo ist diese Quelle und wie ist diese auszuwerten?

Im Idealfall landet man immer bei irgendeiner Datenbank oder bei Dateien.

An Datenbanken kommt man per SQL, Dateien kann man parsen (ggfls. muss man vorher den Text irgendwie extrahieren, wie z. B. bei PDF-Dateien).

Zur Vorhaltung der für die Suche relevanten Daten käme eine Datenbank infrage.

Eine Tabelle (Fundstellen), die eine Beschreibung der Quelle und die Fundstelle enthält, sowie eine ID als technischen Schlüssel.
Bei HTML-Seiten könnte die Beschreibung z. B. der Inhalt des Title-Tags und die Quelle die URL sein, Bei PDF-Dateien als Beschreibung nur der Dateiname und als Quelle der vollständige Pfad.

Eine weitere Tabelle (Wortliste) enthält eine Wortliste.
Diese Tabelle wird beim Lesen der Dateien zur Aufnahme in die Fundstellen befüllt.
Allerdings enthält sie jedes Wort nur einmal, unabhängig davon, wie oft es, egal in welcher Fundstelle, vorkommt. Jedes Wort erhält eine ID als technischen Schlüssel.

Eine dritte Tabelle (Beziehung) sorgt für die Verbingung der Tabellen Fundstellen und Wortliste.
Sie wird zusammen mit der Wortliste aufgebaut. Für jedes Wort erhält sie den technischen Schlüssel der Fundstelle und den technischen Schlüssel des Wortes aus der Wortliste. Sie stellte also eine 1:n-Beziehung zwischen der Fundstelle und der Wortliste dar.

Zur Auswertung wird nun "nur" noch eine SQL-Abfrage benötigt, die aus einer Anwendereingabe generiert wird.

So in der Art:
SQL-Code:
select
  count(*) as Anzahl,
  f.Beschreibung,
  f.Quelle
from Fundstellen f, Beziehnung b, Wortliste w
where w.id = b.WortlisteID
and f.id = b.FundstellenID
and w.wort in (:Eingabe)
group by
  f.Beschreibung,
  f.Quelle
order by 1 desc, 2, 3
Das SQL muss dynamisch aufgebaut werden, der Parameter :Eingabe wird durch alle als Suchbegriff eingegebenen Wörter in korrekter SQL-Syntax ersetzt.

Aus der Ergebnismenge dieses SQL-Statements kann man eine HTML-Seite generieren. Die Quellen, die am Häufigsten in der Tabelle Beziehung vorkommen, dürften durch die Zählung und Gruppierung im Ergebnis vor den Quellen erscheinen, die nur einmalig in der Tabelle Beziehung vorkommen. Damit sollte sich eine einfache Gewichtung realisieren lassen.

So, das soll jetzt mal als "Ideenfutter" reichen.

Geht es in der Aufgabe um die Beschreibung, wie die Software gestaltet sein könnte, oder um eine konkrete Umsetzung?

geskill 22. Jan 2016 12:50

AW: Intelligente Suche - websiten durchsuchen
 
Das Problem kann ganz schnell sehr kompliziert werden, da solltest du dich unbedingt einschränken! Das sieht mir nach einer Masterarbeit im Bereich information retrieval aus ^^

Entweder du beschränkst dich auf die Domain z.B. bestimmte Foren, Blogs wo Content vom Unternehmen liegt oder du erstellst dir Keywords die immer in diesem Content vorkommen und benutzt eine kostenlose Suchmaschine (z.B. Suche nach: "Produktname Produktfunktion").

Für das sammeln der Informationen benutzt du einen Crawler, z.B. Abot.

Ich denke mal es geht in die Richtung mit der kostenlosen Suchmaschine. Hier ist die Schwierigkeit Inhalte aus dem HTML Code der verschiedenen Quellen auszulesen, die allesamt anders formatiert/aufgebaut sind.

Wie du die Datenbank aufbaust hat nahpets ja schon beschrieben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz