diff --git a/doc/feindesign/feindesign_suche.fodt b/doc/feindesign/feindesign_suche.fodt index 0d33e45..2ac8cd7 100644 --- a/doc/feindesign/feindesign_suche.fodt +++ b/doc/feindesign/feindesign_suche.fodt @@ -1,24 +1,24 @@ - 2019-03-22T18:11:56.7688408422019-05-02T19:17:29.797402433PT3H58M25S108LibreOffice/6.2.3.2$Linux_X86_64 LibreOffice_project/20$Build-2Suche1.0.0 + 2019-03-22T18:11:56.7688408422019-05-02T20:17:03.695857485PT4H17M53S117LibreOffice/6.2.3.2$Linux_X86_64 LibreOffice_project/20$Build-2Suche1.1.0 - 216888 + 21255 0 - 36946 + 46953 20286 true false view2 - 9970 - 224473 + 14974 + 33821 0 - 216888 - 36945 - 237173 + 21255 + 46951 + 41540 0 1 false @@ -54,7 +54,7 @@ 192011 false false - true + false true false false @@ -109,12 +109,12 @@ false false true - false + true false true false true - 4029938 + 4170333 true false false @@ -124,7 +124,7 @@ false true false - false + true false true false @@ -86580,6 +86580,7 @@ + @@ -215689,7 +215690,7 @@ - + @@ -215844,6 +215845,12 @@ + + + + + + @@ -215961,6 +215968,9 @@ + + + @@ -216289,6 +216299,12 @@ + + + + + + @@ -216440,290 +216456,317 @@ - + - + - + - + - + - + + + + + + + + - + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - + - - - - - - - - - - - - - + - + - - - - - - - + - - - + + - - + + - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + @@ -216806,50 +216849,71 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + @@ -217168,7 +217232,7 @@ - + @@ -217177,21 +217241,21 @@ - + - + - + @@ -217204,7 +217268,7 @@ - TextureSync Suche Version 1.0.0Seite 8/10 + TextureSync Suche Version 1.1.0Seite 2/10 @@ -217221,9 +217285,9 @@ - - - Suche + + + Suche TextureSync @@ -217246,7 +217310,7 @@ Version - 1.0.0 + 1.1.0 @@ -217254,7 +217318,7 @@ Datum - 02.05.2019 + 02.05.2019 @@ -217277,7 +217341,7 @@ - + Inhaltsverzeichnis @@ -217364,52 +217428,52 @@ - Inhaltsverzeichnis + Inhaltsverzeichnis - 1 Einleitung3 - 2 Eingabe4 - 2.1 Syntaktische Elemente4 - 2.2 Spezialfilter4 - 3 Ausgabe7 - 4 Client-Server-Interaktion7 - 5 Beispiele8 - 6 Changelog10 + 1 Einleitung3 + 2 Eingabe4 + 2.1 Syntaktische Elemente4 + 2.2 Spezialfilter4 + 3 Ausgabe7 + 4 Client-Server-Interaktion7 + 5 Beispiele8 + 6 Changelog10 - - Einleitung + + Einleitung Dieses Dokument befasst sich mit dem Syntax und der Semantik der Suchfunktion. Die Suchfunktion kann nach folgenden Kriterien filtern: - + - Vorhandensein Tags + Vorhandensein Tags - Vollständige Namen + Vollständige Namen - Mindest-Auflösung (inklusive) + Mindest-Auflösung (inklusive) - Einstelldatum liegt vor einem Datum (inklusive) + Einstelldatum liegt vor einem Datum (inklusive) - Einstelldatum liegt nach einem Datum (exklusive) + Einstelldatum liegt nach einem Datum (exklusive) - Die Negation eines der Oberen. + Die Negation eines der Oberen. Es können mehrere der obigen Kriterien als „logisches Und“ kombiniert werden. Ein „logisches Oder“ ist nicht möglich. Diese Entscheidung wurde getroffen, da durch verschalte logische Operatoren der Syntax zu kompliziert würde. Die kursiven Kriterien werden unten als Spezialfilter benannt. - - Eingabe + + Eingabe Syntaktische Elemente Er Syntax sei folgendermaßen definiert: - Suche := Filter " " ( Suche | ε ) - Filter := Negation | Filter1Filter1 := Spezialfilter | Tagfilter - Negation := "!" Filter1 - Spezialfilter := Spezialfiltername ":" SpezialfilterargumentTagfilter := Tagname + Suche := Filter " " ( Suche | ε ) + Filter := Negation | Filter1Filter1 := Spezialfilter | Tagfilter + Negation := "!" Filter1 + Spezialfilter := Spezialfiltername ":" SpezialfilterargumentTagfilter := Tagname @@ -217448,116 +217512,187 @@ - Spezialfilter + Spezialfilter Vollständiger Name Dieser Filter trifft zu, falls der angegebene Name Teil des Namens einer Textur ist. Groß- und Kleinschreibung bleibt unbeachtet. Spezialfiltername: - noder „Name“ + noder „Name“ Spezialfilterargument: - Zeichenkette aus Buchstaben, Zahlen, Bindestrichen und Unterstrichen. - Beispiele: - + Zeichenkette aus Buchstaben, Zahlen, Bindestrichen und Unterstrichen. + Beispiele: + - n:Holz + n:Holz - !name:Papier + !name:Papier - !nAmE:Papier + !nAmE:Papier - Mindest-Auflösung + Mindest-Auflösung Dieser Filter trifft zu, falls Minimum(Breite in Pixeln, Höhe in Pixeln) der Textur größer oder gleich dem als Argument angegebenen Pixel-Anzahl ist. Die Entscheidung nicht nach Breite und Höhe separat zu filtern wurde getroffen, weil Texturen in der Regel Quadratisch sind. Hinweis: Nach einer Maximal-Auflösung kann gesucht werden, indem dieser Filter negiert wird. Spezialfiltername: - roder „Res“ oder „Resolution“ + roder „Res“ oder „Resolution“ Spezialfilterargument: - Wird durch folgende Regex beschrieben: [0-9]+k? - Befindet sich ein „k“ am Ende wird die vorausgehende Zahl mit 1024 multipliziert. - Beispiele: - + Wird durch folgende Regex beschrieben: [0-9]+k? + Befindet sich ein „k“ am Ende wird die vorausgehende Zahl mit 1024 multipliziert. + Beispiele: + - r:4k + r:4k - !res:8k + !res:8k - resolution:1337 + resolution:1337 - !res:25600 + !res:25600 - Einstell-Datum (vorher) + Einstell-Datum (vorher) Dieser Filter trifft zu, falls das Einstelldatum der Textur kleiner oder gleich dem als Argument angegebenen Datum ist. Spezialfiltername: - boder „Bef“ oder „Before“ + boder „Bef“ oder „Before“ Spezialfilterargument: Wird durch folgende Regex beschrieben: [0-9]{1,4}\-[0-1]?[1-9]\-[0-3]?[1-9] - Dies stellt das Format "yyyy-MM-dd" dar, siehe Javadoc unter - java.text.SimpleDateFormat für mehr Informationen. - Beispiele: - + Dies stellt das Format "yyyy-MM-dd" dar, siehe Javadoc unter + java.text.SimpleDateFormat für mehr Informationen. + Beispiele: + - b:2018-09-05 + b:2018-09-05 - !before:2019-1-3 + !before:2019-1-3 - bef:2020-9-03 + bef:2020-9-03 - Einstell-Datum (nachher) + Einstell-Datum (nachher) Dieser Filter trifft zu, falls das Einstelldatum der Textur größer als Argument angegebenen Datum ist. Spezialfiltername: - aoder „After“ + aoder „After“ Spezialfilterargument: Wird durch folgende Regex beschrieben: [0-9]{1,4}\-[0-1]?[1-9]\-[0-3]?[1-9] - Dies stellt das Format "yyyy-MM-dd" dar, siehe Javadoc unter - java.text.SimpleDateFormat für mehr Informationen. - Beispiele: - + Dies stellt das Format "yyyy-MM-dd" dar, siehe Javadoc unter + java.text.SimpleDateFormat für mehr Informationen. + Beispiele: + - a:2018-09-05 + a:2018-09-05 - !after:2019-1-3 + !after:2019-1-3 - - Ausgabe + + Ausgabe Die anzeigten Elemente bei der Suche werden folgendermaßen bestimmt: Zunächst werden alle Textur-Metadaten sequenziell durchgegangen. - Texturen, auf die nicht alle Spezialfilter zutreffen werden übersprungen. - Zutreffende Tags werden gezählt (Score). - Ist die Anzahl größer als oder gleich die Hälfte (aufgerundet) der angeben Filter, dann wird diese ausgegeben. - Die Ausgabe findet mit größter Anzahl zutreffender Filter zuerst statt. Bei gleicher Anzahl wird Alphabetisch nach Namen sortiert. + Texturen, auf die nicht alle Spezialfilter zutreffen werden übersprungen. + Für jeden zutreffenden Tags (bzw. nicht zutreffenden Tag, bei einer Negation) gibt es + + + + 1 + + + + 0.1 + + + ( + + p + + ) + + + + + 1 + 0.1 over sqrt( p ) + + + + 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 + + + Punkte, wobei + + + p + p + + + + VkNMTVRGAQAxAAAAAAAAAAEAGwAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAdIBAADU + AQAADwAAAJYAAQACAAAACQCLAAEAAgAAAP//gQABABAAAAAAAAAAAAAAANEBAADTAQAAlQAB + AAQAAAAAAAAAlgABAAIAAAAJAIsAAQACAAAAHwCKAAEAQgAAAAMAPAAAABAATGliZXJhdGlv + biBTZXJpZgAAAAAAAKYBAAAAAAAAAAAFAAAAAAACAP8DAAAAAAAAAAEA/wMAAAAAAIgAAQAC + AAAAAQCHAAEABQAAAP////8AhgABAAQAAAAAAAAAcgACABcAAACJAAAAfgEAAAEAcNMAAAAA + AAEAAQBwAIwAAQAAAAAAlQABAAQAAAAAAAAAlgABAAIAAAAJAIwAAQAAAAAA + + + die Postion des Tags im Query ist (beginnend bei 1).Somit wird ein Score berechnet. (Anmerkung: Die Position hauptsächlich für die Sortierung eine Rolle. Nutzer geben oft wichtiges zuerst ein.) + Ist die Anzahl größer als oder gleich die Hälfte (aufgerundet) der angeben Filter, dann wird diese ausgegeben. + Die Ausgabe findet mit größtem Score zuerst statt. Bei gleicher Anzahl wird Alphabetisch nach Namen sortiert. Spezialfälle Es wird ein leerer Query angeben: Alle Texturen werden angezeigt. Es wird kein passendes Element gefunden: Im Client wird eine Meldung statt der Texturen angezeigt. Für nähere Informationen siehe Client-Design Dokumente. Client-Server-Interaktion Die Suche selbst nimmt der Server vor. Dieser schickt dem Client das Ergebnis (Siehe Netzwerkprotokoll). Für das Validieren der Suchanfrage ist der Client zuständig. Sollten dennoch ungültige Eingaben den Server erreichen: Werden diese Leise ignoriert: - + - wenn nicht zugelassene Zeichen in der Suche anfrage auftauchen. + wenn nicht zugelassene Zeichen in der Suche anfrage auftauchen. Wirft der Server einen Fehler: (siehe Netzwerkprotokoll, Fehlerhandhabung) - + - bei Invalidem UTF-8 Encoding. + bei Invalidem UTF-8 Encoding. - Bei Unbekannten Spezialfiltern. + Bei Unbekannten Spezialfiltern. - - Beispiele + + Beispiele Beispieldaten @@ -217584,144 +217719,144 @@ - 1 + #1 - wood_185841 + wood_185841 - Holz, Dunkel, Rot, Edel + Holz, Dunkel, Rot, Edel - 2019-05-15 + 2019-05-15 - 4k + 4k - 2 + #2 - wood_84846 + wood_84846 - Holz, Hell + Holz, Hell - 2019-05-13 + 2019-05-13 - 2k + 2k - 3 + #3 - silk_large + silk_large - Stoff, Rot, Edel + Stoff, Rot, Edel - 2018-01-01 + 2018-01-01 - 8k + 8k - 4 + #4 - cotton_xx + cotton_xx - Stoff, Rot, Rau + Stoff, Rot, Rau - 2018-02-01 + 2018-02-01 - 2k + 2k - 5 + #5 - green_fabric + green_fabric - Grün, Stoff + Grün, Stoff - 2018-03-01 + 2018-03-01 - 1k + 1k - 6 + #6 - tin54_54 + tin54_54 - Metall, Hell + Metall, Hell - 2018-03-01 + 2018-03-01 - 4k + 4k - 7 + #7 - copper4_1k + copper4_1k - Rot, Metall + Rot, Metall - 2016-03-01 + 2016-03-01 - 1k + 1k - 8 + #8 - rusty_metall + rusty_metall - Rot, Metall, Rost, Dunkel + Rot, Metall, Rost, Dunkel - 2015-03-01 + 2015-03-01 - 8k + 8k - + @@ -217734,7 +217869,7 @@ Erklärung - Treffer + Treffer [Score] @@ -217743,28 +217878,28 @@ Dunkel - Zuerst werden Texturen angezeigt, die die Tags Holz und Dunkel beinhalten (Score=2). - Anschließend folgen Texturen, die den Tag Holz oder den Tag Dunkel enthalten (Score=1). - - Bedingung: Score 1 = ceil(2/2) + Zuerst werden Texturen angezeigt, die die Tags Holz und Dunkel beinhalten (Score=~2). + Anschließend folgen Texturen, die den Tag Holz oder den Tag Dunkel enthalten (Score=~1). + + Bedingung: Score 1 = ceil(2/2) - 1 - - 2,8 + #1[2,17] + + #2[1,10] ; #8[1,07] - n:wood_ + n:wood_ - Zeigt alle Texturen, deren Name wood_ enthält (Score=0). - - Bedingung: Score ≥ 0 + Name-Spezialfilter + Zeigt alle Texturen, deren Name wood_ enthält (Score=0). + + Bedingung: Score ≥ 0 + Name-Spezialfilter - 1,2 + #1[0] ; #2[0] @@ -217773,12 +217908,12 @@ after:2019-04-30 - Zeigt alle Texturen an, die im Mai 2019 hinzugefügt wurden (Score=0). - - Bedingung: Score ≥ 0 + Before-Spezialfilter + After-Spezialfilter + Zeigt alle Texturen an, die im Mai 2019 hinzugefügt wurden (Score=0). + + Bedingung: Score ≥ 0 + Before-Spezialfilter + After-Spezialfilter - 1.2 + #1[0] ; #2[0] @@ -217788,78 +217923,78 @@ Edel - Zuerst werden Texturen angezeigt, die die Tags Stoff, Rot und Dunkel beinhalten (Score=3). - Dann folgen Texturen mit entweder: - + Zuerst werden Texturen angezeigt, die die Tags Stoff, Rot und Dunkel beinhalten (Score=~3). + Dann folgen Texturen mit entweder: + - Stoff und Rot (Score=2) + Stoff und Rot (Score=~2) - Stoff und Edel (Score=2) + Stoff und Edel (Score=~2) - Rot und Edel (Score=2) + Rot und Edel (Score=~2) - - Bedingung: Score ≥ 2 = ceil(3/2) + + Bedingung: Score ≥ 2 = ceil(3/2) - 3 - - 1,4 + #3[3,23] + + #4[2,15] ; #1[2,13] Stoff Rot - !Edel + !Edel - Zuerst werden Texturen angezeigt, die die Tags Stoff, Rot und nicht Edel beinhalten (Score=3). - Dann folgen Texturen mit entweder: - + Zuerst werden Texturen angezeigt, die die Tags Stoff, Rot und nicht Edel beinhalten (Score=~3). + Dann folgen Texturen mit entweder: + - Stoff und Rot (Score=2) + Stoff und Rot (Score=~2) - Stoff und nicht Edel (Score=2) + Stoff und nicht Edel (Score=~2) - Rot und nicht Edel (Score=2) + Rot und nicht Edel (Score=~2) - Bedingung: Score ≥ 2 = ceil(3/2) + Bedingung: Score ≥ 2 = ceil(3/2) - 4 - - 3, 5, 7, 8 + #4[3,23] + + #3[2,17] ; #5[2,15] ; #7[2,13] ; #8[2,13] Metall - Dunkel + Dunkel res:4k - Zuerst werden Texturen angezeigt, die eine Auflösung von ≥ 4k haben, den Tag Metall und den Tag Dunkel enthalten (Score=2). - Dann werden Texturen angezeigt, die eine Auflösung von ≥ 4k haben und { den Tag Metall oder den Tag Dunkel } enthalten (Score=1). - - Bedingung: Score ≥ 1 = ceil(2/2) + Res-Spezialfilter + Zuerst werden Texturen angezeigt, die eine Auflösung von ≥ 4k haben, den Tag Metall und den Tag Dunkel enthalten (Score=~2). + Dann werden Texturen angezeigt, die eine Auflösung von ≥ 4k haben und { den Tag Metall oder den Tag Dunkel } enthalten (Score=~1). + + Bedingung: Score ≥ 1 = ceil(2/2) + Res-Spezialfilter - 8 - - 1,6 + #8[2,17] + + #6[1,10] ; #1[1,07] - Changelog + Changelog @@ -217872,45 +218007,53 @@ - + 0.1.0 - + - - - 1.0.0 + + 1.0.0 - - + + - Füge Beispiele ein. + Füge Beispiele ein. - Neu: After-Spezialfilter + Neu: After-Spezialfilter - Anpassung der Auswertung: + Anpassung der Auswertung: - (abgerundet aufgerundet) + (abgerundet aufgerundet) - Spezialfilter sind nun erforderlich. + Spezialfilter sind nun erforderlich. - Neu: Spezialfälle + Neu: Spezialfälle - Zuständigkeiten jetzt Fett (Client-Server Interaktion) + Zuständigkeiten jetzt Fett (Client-Server Interaktion) + + + 1.1.0 + + + Verbesserter Score (Einbeziehung der Postion im Query.) + + diff --git a/doc/feindesign/feindesign_suche.pdf b/doc/feindesign/feindesign_suche.pdf index b41784e..1c8f46d 100644 Binary files a/doc/feindesign/feindesign_suche.pdf and b/doc/feindesign/feindesign_suche.pdf differ