Search the FirstSpirit Knowledge Base
Hallo Community,
ich möchte die beiden FirstSpirit Module fsSearch und fsPersonalisation einsetzten.
Nun frage ich mich, wie ich die Engine-Proxy "Personalisation" korrekt innerhalb der fs-search.xml konfigurieren muss. Innerhalb der fs-search.xml werden die einzelnen engines nach folgendem Prinzip verschachtelt:
<engine class="engine1">
<engine class="engine2">
...
</engine>
</engine>
An welche stelle wird die Personaliserungsengine gesetzt, ist diese dann das äußerste Element? Weiterhin wird für die Engine ja auch noch ein Name angegeben. Wird dieser Name nur an der äußersten Engine als Attribut mit eingefügt?
Gibt es da ein Bespiel das über das Beispiel aus der Doku hinausgeht und die Nutzung mehrere Engines abbildet?
viele Grüße und einen guten Rutsch ins neue Jahr :smileygrin:
Christopher Eggert
Hallo Jörg,
ich glaube ich habe die Lösung gefunden:
das Attribut acceptUndefinedResults sollte auf true gesetzt werden, damit auch Ergebnisse ohne Metadatum ausgegeben werden
viele Grüße,
Christopher
Hallo Christopher,
du kannst die Engines wie folgt schachteln:
<engine id="MySearchEngine" name="MySearchEngine" class="de.espirit.firstspirit.opt.search.engine.proxy.MonitorEngineProxy">
<engine class="de.espirit.firstspirit.opt.search.engine.proxy.SecurityEngineProxy">
<engine class="de.espirit.firstspirit.opt.search.engine.spider.SpiderEngine">
...
</engine>
<attribute name="resultKey">groups</attribute>
<attribute name="propertyKey">FIRSTpersonalisation.usergroups</attribute>
</engine>
</engine>
Den Namen brauchst du dann in der web.xml bei der Definition des Servlets:
<servlet>
<servlet-name>fss-Search</servlet-name>
<servlet-class>de.espirit.firstspirit.opt.search.web.SearchServlet</servlet-class>
<init-param>
<param-name>serverURL</param-name>
<param-value>MySearchServer</param-value>
</init-param>
<init-param>
<param-name>searchEngine</param-name>
<param-value>MySearchEngine</param-value>
</init-param>
</servlet>
Viele Grüße
Jörg
Hallo Jörg,
vielen Dank für dein Antwort
mir ist allerdings noch unklar ob es eine Reihenfolge gibt, in der die Engines verschachtelt werden müssen?
In deinem Beispiel hast du als oberste Engine eine MonitorEngineProxy verwendet, ich verwende momentan als oberste Engine ein FilterLocalizeEngineProxy und diese beinhaltet auch das name Attribut.
Könnte ich nun einfach als nächste Engine unter der FilterLocalizeEngineProxy die SecurityEngineProxy konfigurieren oder muss das nach einer Reihenfolge passieren?
z.B.:
FilterLocalizeEngineProxy
SecurityEngineProxy
SpiderEngine
oder benötige ich diese Reihenfolge:
MonitorEngineProxy
SecurityEngineProxy
FilterLocalizeEngineProxy
SpiderEngine
viele Grüße,
Christopher Eggert
Hallo Christopher,
die Engines sollten eigentlich sukzessiv abgearbeitet werden, so dass in deinem Beispiel dann erst nach Sprache und dann nach Rechten gefiltert wird, bevor im Spider-Index gesucht wird.
Viele Grüße
Jörg
Hallo Jörg,
ich habe folgendes nun mal ausprobiert:
Ich habe in der fs-serach.xml die SecurityProxyEngine mit aufgenommen wie folgt:
<engine name="fssEngine" class="de.espirit.firstspirit.opt.search.engine.proxy.SecurityEngineProxy">
<engine class="de.espirit.firstspirit.opt.search.engine.proxy.FilterLocalizeEngineProxy">
<engine class="de.espirit.firstspirit.opt.search.engine.spider.SpiderEngine">
<attribute name="urls" type="list">
<attribute>http://meineDomein/mithras/de/startpage/mithras_home.html</attribute>
<attribute>http://meineDomain/mithras/de_1/startpage/mithras_home.html</attribute>
<attribute>http://meineDomain/mithras/en/startpage/mithras_home.html</attribute>
<attribute>http://meineDomain/mithras/en_1/startpage/mithras_home.html</attribute>
</attribute>
<attribute name="index">/meinIndex/search</attribute>
<attribute name="maxThreads">2</attribute>
<attribute name="threadPriority">1</attribute>
<attribute name="allowed" type="list">
<attribute class="de.espirit.firstspirit.opt.search.engine.spider.link.RegexWebLinkFilter">http://meineDomain/mithras/de/</attribute>
<attribute class="de.espirit.firstspirit.opt.search.engine.spider.link.RegexWebLinkFilter">http://meineDomain/mithras/de_1/</attribute>
<attribute class="de.espirit.firstspirit.opt.search.engine.spider.link.RegexWebLinkFilter">http://meineDomain/mithras/en/</attribute>
<attribute class="de.espirit.firstspirit.opt.search.engine.spider.link.RegexWebLinkFilter">http://meineDomain/mithras/en_1/</attribute>
</attribute>
<attribute name="maxDocuments">1000</attribute>
<attribute name="maxTime">120m</attribute>
</engine>
<attribute name="locales" type="map">
<filter name="de" class="de.espirit.firstspirit.opt.search.filter.RegexFilter">
<attribute name="property">url</attribute>
<attribute name="pattern">(/de/)|(/de_1/)</attribute>
</filter>
<filter name="en" class="de.espirit.firstspirit.opt.search.filter.RegexFilter">
<attribute name="property">url</attribute>
<attribute name="pattern">(/en/)|(/en_1/)</attribute>
</filter>
</attribute>
</engine>
<attribute name="resultKey">groups</attribute>
<attribute name="propertyKey">FIRSTpersonalisation.usergroups</attribute>
</engine>
und auf einer beliebigen Seite folgendes MetaTag ergänzt:
<meta name="groups" content="ceo,qeo" /> wie auch im Beispiel Beschrieben.
Ich bin nun davon ausgegangen, das alles indiziert wird und so ein kompletter Index erstellt wird.
Die Suche wird nur über die Anzeige gefiltert ob ich die Inhalte sehen darf oder nicht.
Wenn ich nun den Index mit Luke öffne kann ich nach den beiden Gruppen z.B. suchen u. finde auch meine Seite, nach anderen Keywords in einem Abstract allerdings kann ich nicht mehr suchen. Auf der Seite bekomme ich gar keine Suchergebnisse mehr ausgegeben als nichtangemeldeter Benutzer.
Ist meine Überlegung an dieser Stelle falsch?
viele Grüße,
Christopher
Hallo Jörg,
ich glaube ich habe die Lösung gefunden:
das Attribut acceptUndefinedResults sollte auf true gesetzt werden, damit auch Ergebnisse ohne Metadatum ausgegeben werden
viele Grüße,
Christopher