SHI GmbH Augsburg - Ihr Starker Partner für Search & Big Data, Apache Solr, IT Commerce Lösungen

SHI - Support und Service
SHI - Support und Service
Wir sind Dienstleister aus Leidenschaft und verstehen unsere Kunden.
Nach dem Projekt ist vor dem Projekt und individuelle, persönliche
Betreuung stehen bei uns ganz weit oben.
SHI - Beratung  Entwicklung  Consulting
SHI - Beratung Entwicklung Consulting
Wir beraten und unterstützen Sie mit Schulungen, Trainings und Consulting. Von der Strategieberatung bis zur Anwendungsentwicklung helfen wir Ihnen bei der Optimierung Ihrer
Geschäftsprozesse.
SHI - Individuelle Anwendungen aus Software-Bausteinen
SHI - Individuelle Anwendungen aus Software-Bausteinen
Bei uns bekommen Sie weder Software von der Stange, noch unerprobte Eigenentwicklungen. Wir setzen auf bewährte Open-Source-Technologien und setzen Ihre individuelle Anwendung
aus passenden
Bausteinen zusammen.
SHI - Fast Forward to Success
SHI - Fast Forward to Success
Geschwindigkeit zählt. Bei den Kosten und bei den Erfolgsaussichten.
Bei uns sorgen professionelles Projektmanagement und modulare Entwicklung
für Ihren raschen und effizienten Software-Projekterfolg.

Universal AJAX Live Search

Am 13.09.2012 durften wir Apache Solr als Suchplattform für Enterprise Search im Rahmen eines Vortrages in Stuttgart bei der dort ansässigen Java User Group (JUGS) vorstellen. In diesem Beitrag möchten wir einige interessante Aspekte des Vortrags aufgreifen und eine Zusammenfassung über die Antworten auf die aufgetauchten Fragen geben.

Sprachidentifizerung mit Solr zur Indexierungszeit

Solr kann Sprachen während der Indexierung erkennen. Dazu benutzt man den langid UpdateRequestProcessor.

Hierzu werden zwei Implementierungen angeboten:

Das Feature von Tika Sprachen zu identifizieren: http://tika.apache.org/0.10/api/org/apache/tika/language/LanguageIdentifier.html

LangDetect Sprachidentifizierung basierend auf einer Java Library: http://code.google.com/p/language-detection/

Die Open Source Suchtechnologien Apache Solr und Apache Lucene sind im professionellen Umfeld längst keine Unbekannten. Zunehmend mehr Unternehmen realisieren Projekte und Produkte mit Solr/Lucene. Dieser Trend wurde in den letzten Jahren in Folge der Übernahme großer, propriäterer Suchmaschinenhersteller durch noch größere Konzerne beflügelt: FAST Search&Transfer wurde von Microsoft gekauft und in SharePoint integriert. Ab dem kommenden Jahr werden alle Kunden mit einem Mainstream Support Vertrag für FAST das Nachsehen haben. HP kaufte Autonomy, Orace holte sich Endeca und der Nachzügler IBM übernahm Vivisimo. Die erworbenen Technologien werden in die eigenen Produktsuiten integriert. Siehe FAST und SharePoint.

 

Im Lichte dieser Entwicklung, dank der Reife von Open Source Software und der Verfügbarkeit professioneller Services ist es kaum verwunderlich, warum zunehmend mehr Unternehmen mit Open Source liebäugen. Kaum einer möchte sich freiwillig in einen solchen Zwang wieder begeben. Insbesondere dann nicht, wenn es sich um nicht-triviale Anwendungsfälle handelt und eine Umstellung der Technologie signifikante Kosten auf sich ziehen könnte. Genau hier spielen Open Source im Allgemeinen und Apache Solr und Apache Lucene im Besonderen ihre Stärken aus.

Wir haben für Solr 4 eine lateinische Sprachunterstützung implementiert.

Hierfür haben wir zwei Filter entwickelt. Einen für die Zahlenkonvertierung ('iv' -> '4', 'v' -> '5', 'vi' -> '6' …) und einen für das Stemming der wichtigsten Suffixe in der lateinischen Sprache.

Folgende Feldtyp Definition ist ein möglicher Use Case für die Analyse der lateinischen Sprache.

<fieldType name="text_latin" class="solr.TextField" positionIncrementGap="100">

<analyzer>

<tokenizer class="solr.StandardTokenizerFactory"/>

<filter class="solr.KeywordMarkerFilterFactory" protected="latin_protwords.txt" />

<filter class="org.apache.solr.analysis.LatinNumberConvertFilterFactory" strictMode="true"/>

<filter class="org.apache.solr.analysis.LatinStemFilterFactory" />

</analyzer>

</fieldType>

Bei der Zahlenkonvertierung gibt es einen strictMode, der eingeschaltet werden kann, da nicht jede Zahl gültig ist. Mit strictMode="true" wird aus "ic" -> "ic" und mit strictMode="false" wird aus "ic" -> "99"
Der Stemmer generiert für jedes Wort zwei gestemmte Versionen, eines als Substantiv gestemmt und eines als Verb.
Beide Filter können in Kombination mit dem KeywordMarkerFilterFactory genutzt werden, damit Eigennamen, wie beispielsweise Markus, vor dem Stemming geschützt werden können.

Wir hoffen, dass der Filter bald in die offizielle Version von Solr übernommen wird. Für alle die lateinische Sprachunterstützung ausprobieren wollen können sich den entsprechenden Patch aus dem Jira (SOLR-3630) herunterladen:

Für jedes Feedback sind wir natürlich dankbar.

Um in Java ein Array von beliebigen, gleichartigen Objekten nach bestimmten Kriterien sortieren zu lassen, ist es nicht nötig, selbst mit komplizierten Schleifen und Zwischenarrays zu arbeiten. Viel einfacher lässt sich das mit dem Interface java.lang.Comparable realisieren.

 

Die Klasse der zu sortierenden Objekte implementiert Comparable, welches für diese Klasse typisiert wird:

public class MyClass implements Comparable<MyClass> {
   // ...
}

SEARCH & BIG DATA, BERATUNG, SCHULUNG, ENTWICKLUNG, SUPPORT, PUBLISHER SOLUTIONS
MIT APACHE SOLR, LUCENE, ELASTICSEARCH, SMARTLOGIC SEMAPHORE, SHI INFOPILOT