wiki:ILIAS/Suche

ILIAS-Volltextsuche

Die ILIAS-Volltextsuche ist Apache Lucene-basiert. Sie ist eigentlich komplett aufgebaut gemäß der ILIAS-Dokumentation http://www.ilias.de/docu/goto.php?target=pg_8239_367&client_id=docu . Sie basiert auf einem Java-Server (von ILIAS "RPC-Server" genannt), dem Apache Lucene-Server, der laufen muss damit die Suche funktioniert. Läuft er nicht, schlägt die Suche silent fehl, es kommen einfach keine Ergebnisse bei jedem Suchbegriff. Siehe dazu auch #348, vor allem für die Dokumentation des Dienstes.

Details zur Suche auf den ITP-Servern (PO3.0)

Seit dem WS13/14 fahren wir derzeit einen Hybridweg: Die Suche ist neben dem HRZ-Login der einzige Grund, warum die VM noch läuft, denn der Java-Suchdaemon läuft auf der VM.

Dieser Prozess ist ausführlich in Ticket #637 beschrieben, daher soll hier nur eine knappe Übersicht über die Funktionsweise stehen:

In der VM ist das ITP-Account elearning-www per NFS gemountet. Es läuft direkt der Lucene-Service so, wie er in der ILIAS-Installation auf dem ITP-Account definiert ist. Der Lucene-Service lauscht öffentlich und durchsucht diese Daten aufm NFS-Speicher. Der tägliche ILIAS-Cronjob läuft auf der ITP-Loginmaschine, ILIAS connected sich netzwerktransparent zum Lucene auf der VM.

Insbesondere heißt das: Außer dem Startup-Script in /etc/init.d/ ist die Lucene-Suche auf der VM nicht mehr mit weiteren Daten auf der VM verbunden, insbesondere nicht mehr mit alten ILIAS-Installationen, die dort rumfliegen. Es gibt auch keinen ILIAS-Cronjob mehr auf der VM!

Der folgende Abschnitt zu PO2 ist nach wie vor interessant, weil er die prinzipielle Funktionsweise der ILIAS-Suche dokumentiert, auch wenn mittlerweile alles verteilt ist.

Details zur Suche in der VM (PO2)

Als PhysikOnline in der VM lief, war die Suche relativ straightforward lauffähig gemacht. Siehe dazu dieser Abschnitt. Siehe weiter unten für Details zu Lucene in der ITP-IT (PO3).

Anzumerken sei, dass der folgende Abschnitt im Präsenz beschrieben ist, als PO2 noch lief.

Die Suche selbst ist mit Konfiguration installiert unter /var/www/elearning/ilias/Services/WebServices/RPC/lib. Dort steht auch eine Readme-File (kopiert am 11.10.2012):

Installation am 18.08.2011

War wirklich etwas verzwickt... typisch wenn es nicht laeuft.

 /etc/init.d/ilias-rpc-server <- quasi komplett umgeschrieben, weil die der README.txt oder online verbugt ist.

Indexdaten und Logfile wird derzeit in /tmp geschrieben. Das ist dirty, aber irgendwie
wollen sie es ja allem Anschein nach auch so.

Vorsicht bei .ini != .property files.

Die Properties vs. ini-Files waren wohl etwas kompliziert. Folgender Aufbau ist seit Ende 2011 aktiv (Security stripped ---):

---@---:/var/www/elearning/ilias/Services/WebServices/RPC/lib  $ ls -la
insgesamt 38148
drwxrwxr-x 5 --- elearning     4096 2011-10-05 14:32 .
drwxrwxr-x 5 --- elearning     4096 2011-06-28 17:28 ..
-rw-rw-r-- 1 --- elearning     1910 2011-10-05 14:32 build.xml
-rwxrwxr-x 1 --- elearning      255 2011-08-17 23:47 ilServer.ini
-rwxrwxr-x 1 --- elearning 39015775 2011-10-05 14:28 ilServer.jar
-rwxrwxr-x 1 --- elearning       89 2011-08-17 23:48 ilServer.properties
drwxrwxr-x 9 --- elearning     4096 2011-10-05 14:27 jars
-rw-rw-r-- 1 --- elearning      376 2011-08-18 00:02 readme-sven.txt
-rw-rw-r-- 1 --- elearning     4782 2011-10-05 14:32 README.txt
drwxrwxr-x 4 --- elearning     4096 2011-06-28 17:28 src
drwxrwxr-x 6 --- elearning     4096 2011-10-22 15:42 .svn
---@---:/var/www/elearning/ilias/Services/WebServices/RPC/lib  $ svn status
A       readme-sven.txt
M       ilServer.properties
A       ilServer.ini
---@---:/var/www/elearning/ilias/Services/WebServices/RPC/lib  $ cat ilServer.ini
[Server]
IpAddress = 127.0.0.1
Port = 12711
IndexPath = /tmp
LogFile = /tmp/ilias-rpc-lucene.log
LogLevel = INFO
NumThreads = 1
RamBufferSize = 256

[Client1]
ClientId = FB13-PhysikOnline
NicId = 5507
IliasIniPath = /var/www/elearning/ilias/ilias.ini.php
---@---:/var/www/elearning/ilias/Services/WebServices/RPC/lib  $ cat ilServer.properties
IpAddress = 127.0.0.1
Port = 12711
IndexPath = /tmp
LogFile = /tmp/ilias-rpc-lucene.log

Die von mir geschrieben Sysv-Init-File /etc/init.d/ilias-rpc-server sieht so aus:

## ILIAS LUCENE RPC-SERVER
## Sven, 17.08.2011

JAVABIN=/usr/bin/java
ILIASDIR=/var/www/elearning/ilias              # Type in the root directory of your ILIAS installation
USER=www-data                                  # Replace with the useranme who should run the rpcserver

case "$1" in
        start)
                if [ -f /tmp/rpcserver.pid ]
                then
                        echo "The RPC Server seems to be running. Type 'rpcserver stop' or remove the file '/tmp/rpcserver.pid' manually"
                        exit 1
                fi
                echo "Starting RPC server"
                su -c "$JAVABIN -Dfile.encoding=UTF-8 -jar $ILIASDIR/Services/WebServices/RPC/lib/ilServer.jar $ILIASDIR/Services/WebServices/RPC/lib/ilServer.ini  start" $USER &
                echo $! > /tmp/rpcserver.pid
                ;;

        stop)
                echo "Shutting down RPC server"
                {
                        kill `cat /tmp/rpcserver.pid`
                        unlink /tmp/rpcserver.pid
                } 2> /dev/null
                ;;

        restart)
                 stop
                sleep 2
                 start
                ;;

        *)
                echo "Usage:  {start|stop|restart}"
                exit 1
esac

exit 0

Siehe auch

  • Suche im ITP: #374.
  • Konkrete Umsetzung Suche in ITP-IT: #637
  • Suche funktioniert nicht mehr, Details: #348
Last modified 4 years ago Last modified on Oct 23, 2013 12:00:37 PM