Forum: PC-Programmierung Eigenen Suchindex in Windows 10 erstellen


von Lias Lindenau (Gast)


Lesenswert?

Ich habe eine CSV-Datei der Form

Dateiname;textinhalt

Die Datei Dateiname ist binär und kann nicht durchsucht werden.

Ich möchte in der Windows 10 - Suche Worte aus dem jeweiligen Textinhalt 
eingeben und im Ergebnis den Textinhalt sehen als auch einen Link auf 
die Datei, quasi meinen eigenen Index.

Wie mache ich das?

von $$$ (Gast)


Lesenswert?

Profis nehmen dafuer eine Datenbank.

Aber doch nicht so etwas ao laecherlich unzuverlaessiges wie
die Windowssuche.

Binaere CSV-Dateien gibt es uebrigens nicht.
Entweder CSV (soll wohl Comma Separated Value) oder Binaer.

von test (Gast)


Lesenswert?

Man kann <textinhalt> als Attribut direkt zur Datei Packen. Ungetestet, 
aber NTFS kann das und die Windows Suche hoffentlich.


Ich würde nen richtigen Dateimanager nutzen. Der TotalCommander kann so 
etwas wenn man das passende Plugin dafür programmiert (spezielle 
individuelle Wünsche erfordern halt eine eigene Programmierung).

von Peter M. (r2d3)


Lesenswert?

Lias Lindenau schrieb:
> Dateiname;textinhalt
>
> Die Datei Dateiname ist binär und kann nicht durchsucht werden.

Entweder handelt es sich um eine lesbare CSV-Datei oder eine Datei im 
Binärformat. Beides zusammen passt nicht.

Bei Windowssystemen sollte das Programm, das Deine Datei geschrieben 
hat, dem Betriebssystem eine Funktion zum Durchsuchen bereitstellen.

Stellt der Hersteller diese Funktion nicht bereit, bleibt nur noch 
Selberschreiben, wenn Du das Format der Datei kennst.

von Lias Lindenau (Gast)


Lesenswert?

$$$ schrieb:
> Binaere CSV-Dateien gibt es uebrigens nicht.
> Entweder CSV (soll wohl Comma Separated Value) oder Binaer.

Lias Lindenau schrieb:
> Die Datei Dateiname ist binär und kann nicht durchsucht werden.

von Peter M. (r2d3)


Lesenswert?

Wie meinen?

von $$$ (Gast)


Lesenswert?

Er hat seine Froschpillen noch nicht genommen.

von test (Gast)


Lesenswert?

Peter M. schrieb:
> Wie meinen?

Er hat dich darauf hingewiesen das du die Aufgabenstellung nicht richtig 
verstanden hast.

Es handelt sich um binäre Dateien UND eine Textdatei (CSV) mit Metainfos 
zu diesen binären Dateien.
Die Textdatei soll von der Suche gelesen (und Durchsucht) werden. Und 
als Ergebnis sollen die Dateinamen der zutreffenden binären Dateien 
gelistet werden.

von adfsd (Gast)


Lesenswert?

Peter M. schrieb:
> Wie meinen?

der TO hat verschiedene Binärdateien, sowie eine csv-Datei (nicht 
binär), in der diesen Binärdateien Textinhalte zugeordnet werden

von Peter M. (r2d3)


Lesenswert?

Danke an alle Übersetzer! :)

Ich glaube, dass die Microsoft-Suche dateiorientiert ist.

Das bedeutet, der Frager sollte die dateispezifischen lesbaren 
Informationen in der Textdatei in die Binärdatei packen.

Technisch könnte man das unter NTFS so realisieren, dass man diese 
Metainformationen in ein neues Attribut der Datei packt:

https://de.wikipedia.org/wiki/Alternativer_Datenstrom

Dann kann man nur noch hoffen, dass die Windowssuche auch anderen 
Attribute neben dem unbenannten Attribut "data" erfasst.

Kopiert man solche Dateien jedoch auf einen Datenträger ohne NTFS, gehen 
diese Zusatzinformationen verloren!

von Arc N. (arc)


Lesenswert?

Lias Lindenau schrieb:
> Ich habe eine CSV-Datei der Form
>
> Dateiname;textinhalt
>
> Die Datei Dateiname ist binär und kann nicht durchsucht werden.
>
> Ich möchte in der Windows 10 - Suche Worte aus dem jeweiligen Textinhalt
> eingeben und im Ergebnis den Textinhalt sehen als auch einen Link auf
> die Datei, quasi meinen eigenen Index.
>
> Wie mache ich das?

Search IFilter implementieren:
https://docs.microsoft.com/en-us/windows/desktop/search/-search-ifilter-conceptual
Das Beispiel von der Seite findet sich hier 
https://github.com/Microsoft/Windows-classic-samples/tree/master/Samples/Win7Samples/winui/WindowsSearch/IFilterSample

von Klaus P. (Gast)


Lesenswert?

Kommt auf die Größe der Datei an.


Am einfachsten nimmst die die Programmiersprache deiner Wahl und liest 
die Datei zeilenweise ein. Splittest jede Zeile nach dem ersten Komma / 
Semikolon und durchsuchtst nur den zweiten Teil. Bei Treffer gibst Du 
den ersten Teil zurück.

Das geht z.B. mit wenigen Zeilen in C# (hier ein funktionsfähiges 
Beispiel ohne jede Fehlerbehandlung und ohne Prüfung der Parameter 
etc.):
1
static void Main(string[] args)
2
{
3
   using (TextReader tr = new StreamReader(@"C:\Tmp\Neues Textdokument.csv"))
4
    {
5
    string line;
6
    while ((line = tr.ReadLine()) != null)
7
      {
8
      string[] elements = line.Split(new char[] { ';' });
9
      if (elements[1].Contains(args[0]))
10
         {
11
            Console.WriteLine(elements[0]);
12
         }
13
      }
14
   }
15
}


Der Suchtext wird im obigen Beispiel einfach als 
Kommandozeilen-Parameter übergeben.


Man kann auch unter Windows die bash installieren und dann awk benutzen. 
Mache ich manchmal bei großen Dateien.


Anonsten die CSV-Datei in eine Datenbank einlesen oder als Fremdtabelle 
einbinden, z.B. mit PostgreSQL FDW. Geht natürlich auch mit Excel...

von Lias Lindenau (Gast)


Lesenswert?

Arc N. schrieb:
> Search IFilter implementieren:
> 
https://docs.microsoft.com/en-us/windows/desktop/search/-search-ifilter-conceptual
> Das Beispiel von der Seite findet sich hier
> 
https://github.com/Microsoft/Windows-classic-samples/tree/master/Samples/Win7Samples/winui/WindowsSearch/IFilterSample

Ich habe es installiert, die Erweiterung filtersample existiert, es 
sollen Eigenschaften und Dateiinhalte indiziert werden. Die Datei ist in 
einem indizierten Ordner.
Gebe ich dog im Cortana-Suchfeld ein, erscheint das Dokument nicht. 
Woran kann das liegen?

von Arc N. (arc)


Lesenswert?

Lias Lindenau schrieb:
> Arc N. schrieb:
>> Search IFilter implementieren:
>>
> 
https://docs.microsoft.com/en-us/windows/desktop/search/-search-ifilter-conceptual
>> Das Beispiel von der Seite findet sich hier
>>
> 
https://github.com/Microsoft/Windows-classic-samples/tree/master/Samples/Win7Samples/winui/WindowsSearch/IFilterSample
>
> Ich habe es installiert, die Erweiterung filtersample existiert, es
> sollen Eigenschaften und Dateiinhalte indiziert werden. Die Datei ist in
> einem indizierten Ordner.
> Gebe ich dog im Cortana-Suchfeld ein, erscheint das Dokument nicht.
> Woran kann das liegen?

Mal die Tests drauf losgelassen?
https://docs.microsoft.com/en-us/windows/desktop/search/-search-ifilter-testing-filters
bzw. dann an die Tests anhängen und Debuggen.
Anderer Fehler kann sein, dass in den Indizierungsoptionen (dort unter 
Erweitert und Dateitypen) schlicht nur eingestellt ist, dass bei der 
gewählten Dateiendung nur die Eigenschaften, aber nicht die Inhalte 
indiziert werden sollen.
Edit: U.U. kanns auch sein, dass die Indizierung neu angestoßen werden 
muss (net stop wsearch, net start wsearch

: Bearbeitet durch User
von Lias Lindenau (Gast)


Angehängte Dateien:

Lesenswert?

Hier das Ergebnis.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.