Apache Lucene / Solr


#1

Ich möchte für ein Projekt eine Volltextindizierung verwenden und bin bei meinen Recherchen auf Lucene von Apache bzw. Solr gestoßen und hoffe, dass sich hier vielleicht irgendjemand damit auskennt, denn anders als bei anderen APIs und Tools bin ich langsam mit meinem Latein am Ende.

Für Lucene gibt es viele schöne Beispiele im Netz zu finden, allerdings hab ich keines entdeckt, das zur aktuellen Version 7.2.1 passt.

Ich hab es nach https://me4bruno.wordpress.com/2013/08/28/lucene-volltextsuche-leicht-gemacht/ versucht, gut, der ist von 2013, aber ich hätte nicht erwartet, dass Lucene in der Zwischenzeit die API offenbar so grundlegend verändert hat, dass ich nicht weiter komme.

Ich konnte meine Daten Indizieren, aber daraus etwas abzurufen war mir nicht möglich.

Ich habe es heute dann mit dem offiziellen Solr-Getting-Started Tutorial versucht:

https://lucene.apache.org/solr/guide/7_2/solr-tutorial.html

Das scheitert am Punkt “Congratulations! Solr is ready for data!” damit, dass mir unter http://localhost:8983/solr “SolrCore Initialization Failures” angezeigt wird. Die Logs unter …\example\cloud\node1\logs (und node2) sind komplett leer und geben somit leider keinen Hinweis auf die Fehlerursache. Die direkte Google-Suche nach dem Fehler lässt doppelte Jars erahnen (nicht der Fall, ich hatte ja auch gerade erst Solr 7.2.1 ausgepackt, was soll da doppelt sein?) oder auf falsch gesetzte Dateien “write-lock” schließen.

Warum funktioniert das frisch heruntergeladene und gerade ausgepackte Tutorial nicht? Unverständlich…

Eigentlich brauche ich auch gar nicht unbedingt Solr. Ich will eigentlich einfach nur zusätzlich zu anderen Suchmöglichkeiten in einer Datenbank auch die Möglichkeit zur Volltextindizierung für bestimmte Dokumente anbieten. Ich hätte nicht gedacht, dass das ganze so dermaßen schwierig an den Start zu bringen ist.

Selbst die Suche nach “Lucene 7.2.1 csv example” oder “Lucene csv example 2018” bzw. “Lucene csv example 2017” bringt nicht so richtig das, was ich mir erhoffe.

Das aktuellste was ich gefunden habe ist noch
“Searching and Indexing With Apache Lucene”


18. Jan. 2017 - Immerhin “Lucene 6.3”
was ich mir aber noch nicht im Detail angeschaut habe.

Andere Dokumentationen sind “updated for Lucene 4” etc.

Die Anleitung von Apache selbst zu Lucene dreht sich leider nur um die Indizierung von einer Reihe von Textdateien, nicht um die einer CSV-Datei (o.ä.).

Ich würde eigentlich das ganze gern in meinen Java-Programmen aufrufen und entsprechende Ergebnisse zu Suchanfragen zurückliefern können. Eigentlich dürfte das ja nicht so schwierig sein und ich hatte erwartet, da spätestens nach einem halben Tag erste Erfolge (laufendes Beispiel) zu haben, leider ist dem nicht so und ich hadere damit schon mehrere Tage herum, was ich als äußerst unbefriedigend empfinde.

Wenn ihr also irgendwelche andere Quellen, Ratschläge oder eigene Erfahrungen habt, nur her damit. Oder falls jemand beim Suchen einfach ein glücklicheres Händchen hat, auch das gern.

Edit: Auch das verlinkte Lucene 6.3 Beispiel scheitert an nicht mehr zu findenen Lucene-Klassen/Methoden…

Edit 2: Nichtmal das was unter https://lucene.apache.org/core/7_2_1/demo/overview-summary.html#overview_description steht, funktioniert so. seufzt Das kann doch alles nicht wahr sein.


#2

Bis jemand antwortet, der Ahnung hat, worum es dabei geht: Ich hab’ gerade mal https://lucene.apache.org/solr/guide/7_2/solr-tutorial.html ausgeführt, und abgesehen davon, dass da gettingstarted und techproducts an ein paar Stellen durcheinandergeworfen ist, scheint das out-of-the-box zu funktionieren. Gibt’s mehr Details über’s OS und die Java-Version? Irgendwo müssten doch mehr Details zu diesen “Initialization Failures” auftauchen…!?


#3

OS ist Windows 7 und Java ist jdk1.8.0_121.

Das ist ja schon mal schön, dass das bei dir funktioniert. Die kombination aus leeren Fehlerlogs und Erfolgsmeldung im CMD-Fenster mit schlicht nicht funktionierender Oberfläche fand ich ziemlich nervig.

Es funktioniert auf beiden Ports nicht, daher gehe ich mal nicht davon aus, dass die Ports das Problem sind.

Da das Fenster noch offen war, hier der genaue Ablauf meines Versuchs:

Solr-Start im CMD-Fenster

U:\Lucene\solr\solr-7.2.1>bin\solr.cmd start -e cloud

Welcome to the SolrCloud example!

This interactive session will help you launch a SolrCloud cluster on your local workstation.
To begin, how many Solr nodes would you like to run in your local cluster? (specify 1-4 nodes) [2]:

Ok, let’s start up 2 Solr nodes for your example SolrCloud cluster.
Please enter the port for node1 [8983]:

Please enter the port for node2 [7574]:

Creating Solr home directory U:\Lucene\solr\solr-7.2.1\example\cloud\node1\solr
Cloning U:\Lucene\solr\solr-7.2.1\example\cloud\node1 into
U:\Lucene\solr\solr-7.2.1\example\cloud\node2

Starting up Solr on port 8983 using command:
“U:\Lucene\solr\solr-7.2.1\bin\solr.cmd” start -cloud -p 8983 -s “U:\Lucene\solr\solr-7.2.1\example\cloud\node1\solr”

Waiting up to 30 to see Solr running on port 8983
Started Solr server on port 8983. Happy searching!

Starting up Solr on port 7574 using command:
“U:\Lucene\solr\solr-7.2.1\bin\solr.cmd” start -cloud -p 7574 -s “U:\Lucene\solr\solr-7.2.1\example\cloud\node2\solr” -z localhost:9983

Waiting up to 30 to see Solr running on port 7574
INFO - 2018-03-05 09:14:27.899; org.apache.solr.client.solrj.impl.ZkClientClusterStateProvider; Cluster at localhost:9983 ready

Now let’s create a new collection for indexing documents in your 2-node cluster.
Please provide a name for your new collection: [gettingstarted]
Started Solr server on port 7574. Happy searching!
techproducts
How many shards would you like to split techproducts into? [2]

How many replicas per shard would you like to create? [2]

Please choose a configuration for the techproducts collection, available options are:
_default or sample_techproducts_configs [_default]
sample_techproducts_configs
Created collection ‘techproducts’ with 2 shard(s), 2 replica(s) with config-set ‘techproducts’

Enabling auto soft-commits with maxTime 3 secs using the Config API

POSTing request to Config API: http://localhost:8983/solr/techproducts/config
{“set-property”:{“updateHandler.autoSoftCommit.maxTime”:“3000”}}
Successfully set-property updateHandler.autoSoftCommit.maxTime to 3000

SolrCloud example running, please visit: http://localhost:8983/solr