Lucene ist eine Open Source Suchmaschine (unterstützt von der Apache Software Foundation), die in Sitecore zur Indexierung und für das Suchen von Content auf einer Website benutzt wird. Sitecore implementiert einen Wrapper für die Lucene Suchmaschine, der seine eigene API besitzt. Die original API (Lucene.Net) und die Sitecore API (Sitecore.Search) sind beide für Entwickler, die ihre Indexierungs- und Suchmöglichkeiten erweitern wollen, zugänglich. [1].
Das Lucene Suchmodul wird dem Sitecore Starter Kit entnommen und in ein separates Modul umgeformt. [2] Man kann das Modul auf der TRAC Website herunterladen. Da es Teil des Starter Kits ist, verwendet es auch die Shared Source Lizenz.
Installation des Moduls
Um das Lucene Suchmodul zu installieren, folgt man dem gleichen Verfahren wie bei jedem anderen Paket in Sitecore.
- Sitecore > Development Tools > Installation Wizard
- Zum Verzeichnis gehen, in welches Sie die LuceneSearch-1.1.Zipdatei heruntergeladen haben
- Den Instruktionen des Wizards folgen.
Bei der Installation des Moduls werden die folgenden Dateien und Items in die Installation hinzugefügt:
Files
/bin/LuceneSearch.dll
/images/search.gif
/LuceneSearch.css
/sitecore modules/LuceneSearch/
/sitecore modules/LuceneSearch/CommonText.cs
/sitecore modules/LuceneSearch/LuceneSearchBox.ascx
/sitecore modules/LuceneSearch/LuceneSearchBox.ascx.cs
/sitecore modules/LuceneSearch/LuceneSearchBox.ascx.designer.cs
/sitecore modules/LuceneSearch/LuceneSearchResults.ascx
/sitecore modules/LuceneSearch/LuceneSearchResults.ascx.cs
/sitecore modules/LuceneSearch/LuceneSearchResults.ascx.designer.cs
/sitecore modules/LuceneSearch/SearchManager.cs
Items
/sitecore/Content/Settings/Common Text |
Items, die es Ihnen ermöglichen, das Suchverhalten und die dem Benutzer präsentierten Nachrichten benutzerdefiniert zu gestalten. |
/sitecore/Layout/Sublayouts/LuceneSearch |
Die zwei für die Suchfunktionalität auf Ihrer Site benötigten Sublayouts. |
/sitecore/Content/Home/Standard_Items |
Das Item, das zur Anzeige der Suchergebnisse verwendet wird. |
/sitecore/Templates/Starter Kit/Meta-Data |
Das Template für die Items im Common Text Ordner |
Wenn Sie das Lucene Suchmodul installieren, erhalten Sie zwei Sublayouts, LuceneSearchBox und LuceneSearchResults, die Sie dann auf Ihrer Website platzieren sollten. LuceneSearchBox ist das Suchfeld, welches Sie an einer beliebigen Stelle oben auf Ihrer Seite einfügen können. Im LuceneSearchResults Sublayout werden dann die Suchergebnisse angezeigt.
Die LuceneSearchBox leitet dann zum Contentitem /sitecore/Content/Home/Standard_Items/Search_Results weiter, um Suchtreffer anzuzeigen.
Wenn Sie das Standarddesign verwenden möchten, denken Sie daran, eine Referenz in das Lucene Such-Stylesheet einzufügen und zwar im gleichen Layout, in das Sie das Sublayout für die Suchergebnisse platziert haben.
Erstellung des Index
Sitecore verwaltet Indexe, indem Items in Sitecore Datenbanken gescannt werden. Jedes Mal, wenn Sie ein Item aktualisieren, erstellen oder löschen, veranlasst Sitecore einen Prozess, der die Indexe aktualisiert. Dieser Prozess ist normalerweise bereits abgeschlossen, wenn Sie ein Item gespeichert oder veröffentlicht haben.
Die Web-Datenbank hat standardmäßig keinen Suchindex. Also müssen Sie einen erstellen, um Suchfunktionalität auf Ihrer veröffentlichten Site zu gewährleisten.
Indexe werden in der web.config Datei erstellt, unter dem Punkt /sitecore/search/configuration/indexes.
Im Folgenden wird ein Beispiel für eine Index-Konfiguration gezeigt:
<index id=“MySearchIndex“
type=“Sitecore.Search.Index, Sitecore.Kernel“>
<param desc=“name“>$(id)</param>
<param desc=“folder“>__mysearchindex</param>
<Analyzer ref=“search/analyzer“/>
<locations hint=“list:AddCrawler“>
<customindex type=“Sitecore.Search.Crawlers.DatabaseCrawler, Sitecore.Kernel“>
<Database>web</Database>
<Tags>My Custom Tag</Tags>
<Root>/sitecore/content/Home</Root>
<include hint=“list:IncludeTemplate“>
<template>{TemplateId #1}</template>
<template>{TemplateId #2}</template>
…
<template>{TemplateId #n}</template>
</include>
</customindex>
</locations>
</index>
Jeder von Ihnen definierte Index besitzt seine eigene spezifische Kennung, bereitgestellt im ID Attribut des INDEX Elements.
Die ersten zwei Parameter beschreiben den Indexnamen und den Ordner, wo sie gespeichert werden soll.
Das <Analyzer> Element zeigt den zu benutzenden Analysator an.
Das <locations> Element definiert den Ort für die Indexe. Es ist möglich, mehrere Orte für einen Index zu haben. Es ist sogar möglich Content aus unterschiedlichen Datenbanken im gleichen Index zu haben.
Jedes Child eines Location Nodes besitzt eine eigene Konfiguration mit den folgenden Optionen:
<Database> |
Spezifizieren Sie, welche Datenbank Sie indexieren möchten. |
<Tags> |
Sie können einen String-Tab an Items von diesem Ort anhängen, so dass Ergebnisse während einer Suche gefiltert oder kategorisiert werden können. |
<Root> |
Spezifizieren Sie den Root-Node des Content Trees, der im Index enthalten sein soll. Der Indexing Crawler wird den Content unterhalb dieses Orts indexieren. |
<include> |
In diesem Bereich ist es möglich, Templates, die im Index enthalten/nicht enthalten sein sollen, hinzuzufügen. |
Ferner verwenden die Indexe in Sitecore den History.Engine Mechanismus, um den Index zu erstellen oder zu aktualisieren, wenn ein Item erstellt oder aktualisiert wurde. Um dies für die Web-Datenbank zu ermöglichen, müssen Sie die folgenden Zeilen in die Web-Datenbank, die im /sitecore/databases/ Bereich in der web.config Datei definiert ist, einfügen:
<Engines.HistoryEngine.Storage>
<obj type=“Sitecore.Data.$(database).$(database)HistoryStorage, Sitecore.Kernel“>
<param connectionStringName=“$(id)“/>
<EntryLifeTime>30.00:00:00</EntryLifeTime>
</obj>
</Engines.HistoryEngine.Storage>
Seien Sie gespannt auf den zweiten Teil der Lucene Suchmodul Serie, welcher sich auf den konkreten Einsatz dieses Moduls konzentrieren wird.
REFERENZEN
[1] www.sdn.sitecore.net/Reference
[2] http://trac.sitecore.net/LuceneSearch/
Der Original-Blogeintrag stammt von unserem Partner Oshyn und ist zu finden unter http://oshyn.com/_blog/Web_Content_Management/post/Using_the_Lucene_Search_Module_in_Sitecore_installation/
Wir bedanken uns an dieser Stelle bei Diego Rebosio CEO at Oshyn für die Bereitstellung des Contents.