28.11.2010

jsSearch 0.2 und dessen Konfiguration

Leider fehlt es jsSearch noch an Dokumentation deshalb gibt es heute ein neues jsSearch 0.2 mit etwas Erklärung:

Um jsSearch zu konfigurieren, übergibt man dem jsSearch oder prSearch Konstruktor einfach ein Objekt mit den entsprechenden Eigenschaften. Eine Liste der verfügbaren Optionen zeigt das „options“ Objekt ganz oben in der javascript/jsSearch.js Datei. Hier sollten aber keine Modifikationen vorgenommen werden, da diese bei Updates sonst immer wieder auf neue angepasst werden müssten. Am besten konfguriert man jsSearch in der index.html der Beispielimplementierung. Momentan ist dort folgendes zu finden (angepasst für die Indizierung von meiner Domain):

	var options={
		uri:'/',
		writeHelper:'ajax',
		writeHelperPlatform:'',
		fileNameMatch: function(filename){
			if (filename.search(/^http:\/\/random-internet-node.de\/.*/) >=0){
				return true;
			}else{
				return false;
			}
		},
		savePath: '/jsSearch/saveJson.php5'
	}

Will man jetzt anstelle von http://random-internet-node.de mit Firefox die Datei Z:/au_xhtml/index.xhtml, und alle Dateien die von dort verlinkt werden, indizieren muss man das options Objekt in etwa so anpassen:

	var options={
		uri:'file:///Z:/au_xhtml/index.xhtml',
		writeHelper:'gecko',
		writeHelperPlatform:'win32',
		fileNameMatch:function(){ return true },
		savePath:'Z:\\jsSearch-0.2\\'
	}

Hier noch etwas Erklärung der Eigenschaften:

uri: Die Adresse, die indiziert werden soll, wie sie oben im der Adresszeile des Browsers steht.

writeHelper:ajax“ wenn das Speichern über den Webserver erfolgt (wie bei http://random-internet-node.de), und „gecko“ wenn die Firefox speziefische Implementierung für die Speicherung im lokalen Dateisystem benutzt werden soll. Momentan ist das speichern im Dateisystem auf Geckobasierte Browser wie Firefox beschränkt, da es hierfür (noch) keine generische Schnittstelle in den Browsern gibt. (evtl. taugt da die „Web Storage“ W3C Spezifikation. Muss ich mir noch genauer anschauen). Um mit Firefox ein lokales Verzeichniss Indizieren zu können, ist in dem about:config Dialog von Firefox noch security.fileuri.strict_origin_policy auf false zu setzen, da Firefox in der Standardeinstellung XHR Zugriffe auf file:// URIs nicht zulässt:

writeHelperPlatform: (Nur wenn writeHelper auf  „gecko“ eingestellt ist). Betriebssytem des Browsers. Momentan „win32“ oder „“.

fileNameMatch: Eine Funktion zum bestimmen welche Dateinamen, Verzeichnisse und Domains berücksichtigt werden sollen. Für den Anfang sollte es function(){ return true } tuen.

savePath: Der Pfad in dem der Index gespeichert wird. Am besten das Verzeichniss, in dem die index.html von jsSearch liegt. Dieser Pfad muss ein Format, abhängig von dem was in writeHelper und writeHelperPlatform angegeben ist, haben.

Zum Beispiel:

  • writeHelper:’ajax‘ -> ‚/jsSearch/saveJson.php5‘
  • writeHelper:’ajax‘ & writeHelper:’win32′ -> ‚Z:\\jsSearch-0.2\\‘
  • writeHelper:’ajax‘ & writeHelper:“ (z.B. Linux und andere Unixoide Betriebsysteme): ‚/home/fred/jsSearch-0.2/‘

Eine Wichtige Einschränkug gibt es bei jsSearch (sowie allen anderen Javascript Anwendungen), die sich nicht ohne weiteres umschiffen lässt: Cross Domain/Origin Zugriffe. Dies bedeutet schlicht und einfach dass jsSearch, der zu Indizierende Inhalt und das Verzeichniss in dem der Index gespeichert werden soll auf der selben Domain (oder eben in einem Lokalen Verzeichniss) liegen müssen, da sonst der Zugriff vom Webbrowser unterbunden wird. Dies sollte sich aber mit dem „Cross-Origin Resource Sharing“ W3C Standard, soweit er denn Umgesetzt wird ändern.

Den aktuellen Download gibt es wie immer auf der Projektseite