Die driver/searchdefs-Masken sind ein spezieller Fall von Masken, sie haben keine GRIDs und dementsprechend auch keine CELLs. Sie werden von cell/SEARCHFIELD innerhalb von driver/search-Masken benutzt. Die driver/searchdefs-Masken bestimmen die Art und Weise wie nach einem oder mehreren Begriffen gesucht wird.
Table | Die Tabelle für die diese searchdef definiert wird. |
Searchtype | TEXT für Text-Suchen, PHP für frei definierte Such-Algorithmen in PHP, SELECTOR für ein Pulldown, um andere driver/searchdefs-Masken durch den Benutzer auswählbar zu machen. |
Lesen Sie in der Benutzer-Anleitung mehr über die Textsuche.
Take Input As Whole String | Wenn gesetzt, wird die Benutzer-Eingabe nicht zwischen Wörtern gesplittet, sondern als eine Komplett-Eingabe benutzt; die Eingabe wird in doppelte Anführungszeichen gesetzt. Diese Checkbox wird benutzt, wenn z.B. Inventar-Nummern gesucht werden sollen, die ein Leerzeichen beinhalten. |
Columns | Die Spalten über die gesucht wird. Die Erklärung der Tabelle ist weiter unten. |
Additional Select SQL | SQL zur Ergänzung des von dieser searchdef zusammengebauten SQLs. Dieser String wird mit AND an das zusammengebaute SQL angehängt. Benutzen Sie Debug SQL in der driver/search-Maske, um die Auswirkungen zu überprüfen. |
LINKED (eadb_links) | Hier können Sie andere searchdefs angeben über die mittels des eingegeben Suchbegriffs gesucht wird. In der anderen searchdef gefundenen Objekte werden über die allgemeine Verknüpfungs-Tabelle eadb_links mit in diese Suche einbezogen. eadb_links wird hauptsächlich in älternen easydbs benutzt. |
Table | Die Tabelle für die die Column angezeigt wird. Hier wird zuerst die Haupt-Tabelle aufgelistet und danach alle Tabellen die n-1 zu der Haupt-Tabelle verknüpft sind (Wiederholgruppen). |
Column | Die Spalte für die die Such-Art definiert wird. |
Type | Der easydb-Datentyp.
|
Unused | Aktivieren Sie diese Spalte, wenn die Spalte aus der Tabelle mit dem eingegeben Such-Begriff(en) nicht durchsucht werden soll. |
Search | Gibt an, ob die Spalte durchsucht wird oder nicht. Dafür wird für Text-Spalten-Typen je Searchdef ein Tsearch2-Index benutzt und für String-Spalten-Typen ein sogenannter patternopts-Index. Für Spalten vom Typ easfile ist die Suche nach Filename (Dateinamen) oder Fulltext in Documents (Volltext in Dokumenten) möglich. Für 1-n Link-Spalten kann hier angegeben werden, über welche searchdef in Link-Tabellen zu den Suchbegriff(en) IDs gesammelt und gegen diese Spalte gematcht werden. Wählen Sie im Pulldowns unterhalb reverse 1-n eine Link-Spalte zu einer anderen Tabelle: Damit wird die aktuelle Searchdef von allen für die andere Tabelle definierten Searchdefs benutzt. Mit dieser Methode lassen sich n-m-Tabellen in die Suche einbeziehen. Wenn Sie eine Tabelle unter reverse 1-n verlinken, hat die Verlinkung für eine direkte Suche in der aktuellen Searchdef keine Bedeutung. |
%Like% | Die Spalte wird mit SQL-%LIKE% gegen die Such-Begriff(e) gematcht. Diese Art des Suchens ist langsam (grün markiert). |
%Like | Die Spalte wird rechtstrunkiert mit SQL-%LIKE gegen die Such-Begriff(e) gematcht. Diese Art des Suchens ist langsam es sei denn, es gibt einen INDEX auf der Spalte. |
Like | Die Spalte wird nicht trunkiert mit SQL-LIKE gegen die Such-Begriff(e) gematcht. Der Benutzer kann durch * selber trunkieren. |
= | Die Spalte wird mit SQL-= gegen die Such-Begriff(e) gematcht. Diese Suche bietet sich an bei Zahlen und auch in Verbindung mit Take input as whole string. |
Word | Die Spalte wird mit einem regulären Ausdruck gegen die Such-Begriff(e) gematcht, so dass wortweise gesucht wird. Diese Art des Suchens ist langsam (grün markiert). |
Full | Die Spalte wird mit einem Volltext-Index gegen die Such-Begriff(e) gematcht, so dass wortweise gesucht wird. Hierfür ist ein Volltext-Index nötig, der für PostgreSQL mit ezadmin erstellt werden kann. Für Spalten vom Typ easfile ist auch eine Volltextsuche möglich. Hierbei wird eine Volltext-Suchanfrage an den EAS gestellt und die zurückgegebenen Asset-IDs werden mit der easfile-Spalte abgeglichen. |
Linked | Die Bedeutung dieser Spalte ist für 1-n Link-Spalten in der vorherigen Tabelle erklärt. |
Nur für PostgreSQL und seit Version 4.0.159.
Mit der Config-Variable SEARCH_AUTO_WILDCARD kann vom System-Administrator festgelegt werden, dass um Suchterms, die keine Platzhalter oder Anführungszeichen enthalten, automatisch ein * vor und nach jedem Suchwort eingefügt werden.
Diese Tabelle gibt eine Übersicht über die intern benutzten Suchstrategien bei bestimmten Suchen.
easydb Datenbank Typ | Suche | Suchstrategie | Geschwindigkeit |
---|---|---|---|
Text | such mich | tsearch2(such&mich) | ++ |
Text | such* mich | tsearch2(such*&mich) | ++ |
Text | *such mich | ILIKE ‘%such’ INTERSECT tsearch2(mich) | - |
Text | "such mich" | tsearch2(such&mich) INTERSECT ILIKE~ ‘\bsuch\s+mich\b’ | + |
Text | "such* mich" | tsearch2(such*&mich) INTERSECT ILIKE~ ‘\bsuch\s+mich\b’ | + |
Text | "such m\*ch" | tsearch2(such&m*ch) INTERSECT ILIKE~ ‘\bsuch\s+m*ch\b’ | - |
Text | ""such mich"" | tsearch2(such*&mich) [in einer Tabelle] | ++ |
Text | ""such* mich"" | tsearch2(such*&mich) [in einer Tabelle] | ++ |
Text | ""*such mich"" | ILIKE ‘%such’ [in einer Tabelle] | - |
Text | ‘such m*ch’ | LIKE ‘%such m*ch%’ | - |
String | such mich | ILIKE ‘such’ INTERSECT ILIKE ‘mich’) | ++ |
String | such* mich | (ILIKE ‘such%’ INTERSECT ILIKE ‘mich’) | ++ |
String | *such mich | ILIKE ‘%such’ INERSECT ILIKE ‘mich’ | - |
String | "such mich" | ILIKE ‘such mich’ | + |
String | "such m*ch" | ILIKE ‘such m%ich’ | + |
String | ""such mich"" | (ILIKE col1 ‘such’ OR ILIKE col2 ‘such’) INTERSECT (ILIKE col1 ‘mich’ OR ILIKE col1 ‘such’) ) [in einer Tabelle] | + |
String | ""such* mich"" | (ILIKE col1 ‘such%’ OR ILIKE col2 ‘such’) INTERSECT (ILIKE col1 ‘mich%’ OR ILIKE col1 ‘such’) ) [in einer Tabelle] | + |
String | ""*such mich"" | (ILIKE col1 ‘%such’ OR ILIKE col2 ‘such’) INTERSECT (ILIKE col1 ‘%mich’ OR ILIKE col1 ‘such’) ) [in einer Tabelle] | - |
String | "such m\*ch" | ILIKE ‘such m*ch’ | + |
String | ‘such m*ch’ | EQUALS ‘such m*ch’ | ++ |
Erklärung der Pseudo-SQL-Suchbegriffe:
Der PHP-Typ erlaubt beliebiges PHP zum Generieren von SQL, welches dann mit in die Suche eingebaut wird. Sie schreiben den Inhalt einer Funktion, welche in dem Array $values die Werte der verwendeten Suchfelder übergeben bekommt.
Inputs | Anzahl der für diese searchdef verfügbaren Suchfelder. Benutzen Sie cell/SEARCHFIELD, um die Suchfelder in Ihrer driver/search-Maske einzubauen. |
Function | Der Inhalt der PHP-Funktion, die Werte der Inputs sind im Array $values. Beispiel 1 um eine Datierung zu suchen: return check_datierung($values[0],"datierung"); Beispiel 2 für ein Datumsbereich mit 2 Eingabefeldern: // check inputs if (!$values[0] && !$values[1]) { // empty? ignore return ""; } else if (!$values[1]) { // only first value given? build range from then to today $datestr = $values[0] . " - " . strftime("%d.%m.%Y", time()); } elseif (!$values[0]) { // only second date given? build range from day 0 to then $datestr = "1.1.1001 - " . $values[1]; } else { // both values given? create range $datestr = $values[0] . " - " . $values[1]; } $sql = search_date_sql($datestr, "easydb_insert_time"); if ($sql == "REASK") { alert("Bitte überprüfen Sie Ihre Eingabe für das Feld "Einstelldatum"."); } return $sql;Beispiel 3 für eine EAS-Schlüsselwortsuche (ein Eingabefeld): // check if some search term is given if (strlen($values[0]) > 0) { $ids = array(); // List of metadata fields to search in. The syntax of these // entries is "metadata.$GROUPNAME.$KEYWORDNAME" $fields = array( "metadata.IPTC::ApplicationRecord.IPTC2:Caption-Abstract", "metadata.IPTC::ApplicationRecord.IPTC:Caption-Abstract", "metadata.IPTC::ApplicationRecord.IPTC2:ApplicationRecordVersion", "metadata.IPTC::ApplicationRecord.IPTC:ApplicationRecordVersion", ); // for each keyword an EAS request is send for normal keyword search // and for keyword fulltext search, so don't use too extensively as // it may slow down the search foreach ($fields as $field) { $ids = array_merge($ids, EAS::searchByKeyword($field, $values[0])); $ids = array_merge($ids, EAS::searchByKeyword($field, "FULLTEXT({$values[0]})")); } // map EAS IDs to easydb IDs if (count($ids)) { return "bild IN (".implode(",", $ids).")"; } else { return "FALSE"; } }Weitere Optionen der EAS-Schlüsselwortsuche finden sich in der EAS-API-Dokumentation |
Mit diesem Typ können Sie ein Pulldown in eine driver/search-Maske einbauen, welches dem Benutzer die Auswahl der verwendeten searchdef erlaubt. Die angezeigten Optionen des Pulldowns werden über Stringtool gemappt. Für den SELECTOR müssen Sie mit cell/SEARCHFIELD immer 2 Suchfelder ausgeben.
SELECTOR 0 | Die searchdef, welche als 1. Option in dem Pulldown erscheint. |
SELECTOR 1 | Die searchdef, welche als 2. Option in dem Pulldown erscheint. Erscheint nur, wenn SELECTOR 0 ausgewählt wurde. |
SELECTOR 2 | Die searchdef, welche als 3. Option in dem Pulldown erscheint. Erscheint nur, wenn SELECTOR 1 ausgewählt wurde. |
SELECTOR <n> | Die searchdef, welche als n-te Option in dem Pulldown erscheint. Erscheint nur, wenn SELECTOR (n-1) ausgewählt wurde. |
Preselect | Die Option, welche im Pulldown vorausgewählt werden soll. Wenn leer wird die erste ausgewählt. |