ceggert
I'm new here

Modul fsSearch mit Personalisation

Jump to solution

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

0 Kudos
1 Solution

Accepted Solutions

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 Smiley Wink

viele Grüße,

Christopher

View solution in original post

0 Kudos
5 Replies
stephan
I'm new here

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

0 Kudos

Hallo Jörg,

vielen Dank für dein Antwort Smiley Happy

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

0 Kudos

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

0 Kudos

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. Smiley Sad

Ist meine Überlegung an dieser Stelle falsch?

viele Grüße,
Christopher

0 Kudos

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 Smiley Wink

viele Grüße,

Christopher

0 Kudos