Lucene Suche

Installation

Die EGOCMS Lucene Suche ist einfach einzurichten. Kopieren Sie die ecmlucene.war aus lib/lucene in einen Webapplication Server.

Sicherheit

Die ecmlucene sollte nicht von außen erreichbar sein. Der Webapplicationport sollte daher über eine Firewall gesichert werden.

Falls die ecmlucene Suche auf einem eigenen Webserver eingerichtet wird, so sollte die Kommunikation per https erfolgen. Außerdem sollte sichergestellt werden, dass nur die EGOCMS Server Zugang haben.

Test

Rufen Sie die Url http://localhost:8080/ecmlucene auf. Der Text "ecmlucene tomcat works" sollte erscheinen.

<em>curl http://localhost:8080/ecmlucene/ <em>ecmlucene tomcat works</em>

Protokoll

Zentrale Schnittstelle ist die json Url. Über diese wird sowohl die Indizierung als auch die Suche durchgeführt.

Achtung: Die Indizierung läuft in einem Thread, d.h. Probleme und Fehler können nicht direkt im Response angezeigt werden. Hierfür muss die Log des Webapplication Servers angeschaut werden.

Basisaufruf

  • Url: http://localhost:8080/ecmlucene/json
  • Method: POST
  • Parameter
    • method: string
      Methode: update/search
    • index: int
      ID einer Page (nur update)
    • data: string (JSON encoded object)
    • count: string (JSON encoded object)
    • config: string (JSON encoded object)
  • Response: string (JSON encoded object)
    result: boolean / hashmap

    Update

    • Url: http://localhost:8080/ecmlucene/json
    • Method: POST
    • Parameter
      • method
        update
      • index
        ID der Seite, für die der Index aktualisiert werden soll
      • config: string (JSON encoded object)
        • path: string
          Pfad auf dem Server, in dem der Index abgelegt wird. Pro EGOCMS Installation wir ein eigener Pfad benötigt.
        • table: string
          Mandant und Sprache für den Index
      • coun: string (JSON encoded object)
        {}
      • data: string (JSON encoded object)
        • keywords: string
          Schlagworte
        • url: string
          eine feste Url
        • name: string
          Name der Seite
        • title: string
          Überschrift der Seite
        • short: string
          Kurzbeschreibung
        • content: string
          Inhalt
        • extra: hashmap<string:string>
          Extrafelder
        • type: string
          Seitentyp
        • nav_hide: int
          Seitenflags
        • inactive: int
          0 - aktiv, 1 - inaktiv
        • deleted: int
          0 - aktiv, 1 - gelöscht
    • Response: string (JSON encoded object)
      • result: boolean
        true - Indizierung wird durchgeführt, false - es kann keine Indizierung erfolgen

    Beispiel

<a><strong>curl -d 'method=update&index=1&data={"name":"test","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json</strong> <strong><em>{"result":true}</em></strong><a href="http://localhost:8080/ecmlucene/json"> </a>

Für die Seite mit der id 1 im Mandanten test in der Sprache de wird für die Installation "/usr/share/nginx/egocms/var/index" ein Index angelegt. Inhalt des Index ist der "name" mit dem Wert "test".

Search

    • Url: http://localhost:8080/ecmlucene/json
    • Method: POST
    • Parameter
      • method
        search
      • query: string
        die Suchanfrage
      • config: string (JSON encoded object)
        • path: string
          Pfad auf dem Server, in dem der Index abgelegt wird. Pro EGOCMS Installation wir ein eigener Pfad benötigt.
        • table: string
          Mandant und Sprache für den Index
        • leading_wildcard: boolean
          true - führende Wildcards erlauben
        • only_active: boolean
          true - nur aktive Seiten zurückliefern; die Seiten müssen sowohl aktiv (inactive=0) und dürfen nicht gelöscht sein (deleted=0)
    • Response: string (JSON encoded object)
      • result: hashmap<string:float>
        Die Schlüssel sind Page IDs und die Werte Relevanzen.

Beispiel

Zunächst den Index mit Daten füllen

curl -d 'method=update&index=1&data={"name":"test","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/jsoncurl -d 'method=update&index=2&data={"name":"test und so","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/jsoncurl -d 'method=update&index=3&data={"name":"kein Treffer","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json curl -d 'method=update&index=4&data={"name":"Und ein ganz langer Test","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json

Beispiel mit Suchtreffer

<strong>curl -d 'method=search&query=test&config={"leading_wildcard":false,"only_active":false,"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json</strong> <strong><em>{"result":{"1":1.0464073,"2":0.8412757,"4":0.80114365}}</em></strong>

Beispiel ohne Treffer

<em>curl -d 'method=search&query=test2&config={"leading_wildcard":false,"only_active":false,"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json <em>{"result":{}}</em>

Delete

  • Url: http://localhost:8080/ecmlucene/json
  • Method: POST
  • Parameter
    • method
      delete
    • index: int
      ID der Seite, deren Index gelöscht werden soll
    • config: string (JSON encoded object)
      • path: string
        Pfad auf dem Server, in dem der Index abgelegt wird. Pro EGOCMS Installation wir ein eigener Pfad benötigt.
      • table: string
        Mandant und Sprache für den Index
  • Response: string (JSON encoded object)
    • result: boolean
      true - Indizierung wird durchgeführt, false - es kann keine Indizierung erfolgen

Beispiel

<em>curl -d 'method=update&index=1&data={"name":"test","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json <em>{"result":{}}</em><a href="http://localhost:8080/ecmlucene/json"> </a>curl -d 'method=search&query=test&config={"leading_wildcard":false,"only_active":false,"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json <em>{"result":{"1":0.87546873}} </em><strong>curl -d 'method=delete&index=1&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json <em>{"result":true}</em></strong><strong><a href="http://localhost:8080/ecmlucene/json"> </a></strong>curl -d 'method=search&query=test2&config={"leading_wildcard":false,"only_active":false,"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json <em>{"result":{}}</em>

Globale Suche

    • Url: http://localhost:8080/ecmlucene/json
    • Method: POST
    • Parameter
      • method
        globalSearch
      • tables: string (JSON encoded array)
      • query
        die Suchanfrage
      • config: string (JSON encoded object)
        • path: string
          Pfad auf dem Server, in dem der Index abgelegt wird. Pro EGOCMS Installation wir ein eigener Pfad benötigt.
        • table: string
          Mandant und Sprache für den Index
        • leading_wildcard: boolean
          true - führende Wildcards erlauben
        • only_active: boolean
          true - nur aktive Seiten zurückliefern; die Seiten müssen sowohl aktiv (inactive=0) und dürfen nicht gelöscht sein (deleted=0)

Response: string (JSON encoded object)

    • result: hashmap<string:hashmap<string:float>>
      Die Schlüssel sind die Mandanten mit Hashmaps mit den Relevanzen für einzelne Page IDs.

Beispiel

Zwei Mandanten (test_de und demo_de) mit jeweils zwei Seiten (1 und 2) anlegen.

curl -d 'method=update&index=1&data={"name":"test","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json<span>curl -d 'method=update&index=2&data={"name":"hallo","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json curl -d 'method=update&index=3&data={"name":"kein Treffer","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' </span>http://localhost:8080/ecmlucene/json curl -d 'method=update&index=4&data={"name":"Und ein ganz langer Test","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/jsoncurl -d 'method=update&index=1&data={"name":"hallo","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"demo_de"}' http://localhost:8080/ecmlucene/json curl -d 'method=update&index=2&data={"name":"test","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"demo_de"}' http://localhost:8080/ecmlucene/json</span>

Die Mandantensuche durchführen.

<em>curl -d 'method=search&query=test&config={"leading_wildcard":false,"only_active":false,"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json <em>{"result":{"1":1.0464073,"2":0.8412757,"4":0.80114365}}</em> curl -d 'method=search&query=test&config={"leading_wildcard":false,"only_active":false,"path":"/usr/share/nginx/egocms/var/index","table":"demo_de"}' http://localhost:8080/ecmlucene/json<a href="http://localhost:8080/ecmlucene/json"></a> <em>{"result":{"2":1.634194}}</em>

Und jetzt eine globale Suche.

<strong>curl -d 'method=globalSearch&query=test&tables=["test_de","demo_de"]&config={"leading_wildcard":false,"only_active":false,"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json</strong> <strong><em>{"result":{"demo_de":{"2":1.634194},"test_de":{"1":1.0464073,"2":0.8412757,"4":0.80114365}}}</em></strong>

Index leeren

  • Url: http://localhost:8080/ecmlucene/json
  • Method: POST
  • Parameter
    • method
      reset
    • config: string (JSON encoded object)
      • path: string
        Pfad auf dem Server, in dem der Index abgelegt wird. Pro EGOCMS Installation wir ein eigener Pfad benötigt.
      • table: string
        Mandant und Sprache für den Index
  • Response: string (JSON encoded object)
    • result: boolean
      true - Der Index wurde erfolgreich gelöscht.

Beispiel

Zwei Mandanten (test_de und demo_de) mit jeweils zwei Seiten (1 und 2) anlegen.

curl -d 'method=update&index=1&data={"name":"test","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/jsoncurl -d 'method=update&index=2&data={"name":"hallo","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json curl -d 'method=update&index=3&data={"name":"kein Treffer","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json curl -d 'method=update&index=4&data={"name":"Und ein ganz langer Test","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/jsoncurl -d 'method=update&index=1&data={"name":"hallo","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"demo_de"}' http://localhost:8080/ecmlucene/json curl -d 'method=update&index=2&data={"name":"test","inactive":0,"deleted":0,"nav_hide":0}&count={}&config={"path":"/usr/share/nginx/egocms/var/index","table":"demo_de"}' http://localhost:8080/ecmlucene/json

Eine globale Suche durchführen.

<em>curl -d 'method=globalSearch&query=test&tables=["test_de","demo_de"]&config={"leading_wildcard":false,"only_active":false,"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json <em>{"result":{"demo_de":{"2":1.634194},"test_de":{"1":1.0464073,"2":0.8412757,"4":0.80114365}}}</em>

Den Index leeren.

<strong>curl -d 'method=reset&config={"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json</strong> <strong><em>{"result":true}</em></strong>

Die globale Suche findet nur noch im Mandanten demo_de Treffer.

<em>curl -d 'method=globalSearch&query=test&tables=["test_de","demo_de"]&config={"leading_wildcard":false,"only_active":false,"path":"/usr/share/nginx/egocms/var/index","table":"test_de"}' http://localhost:8080/ecmlucene/json <a href="http://localhost:8080/ecmlucene/json"></a><em>{"result":{"demo_de":{"2":0.94000727}}}</em>