thoherme
Occasional Observer

BasicSearch MultiEngineProxy Beispiel gesucht

Jump to solution

Hallo liebe FirstSpirit Community,

wir indexieren aktuell ca. 70 Webseiten (alles geht in einen Index).

Prinzipiell funktioniert das auch. Problem ist, dass die Anzahl der Dokumente die letztendlich im Index landet nicht vollständig ist.

Reduziert man die Anzahl der Webseiten (z.B. auf 35) bekommt man das erwartete Ergebnis (also für die 35 in der fs-search referenzierten Seiten natürlich). Es spielt dabei keine Rolle welche Schnittmenge von 35 Webseiten man von den 70 auswählt.

Eine Fehleranalyse warum das bei 70 Seiten unvollständig ist, ist aktuell noch im Gange.

Parallel würde ich aber gerne eine Alternative ausprobieren. Dabei würde ich gerne mehrere Engines definieren und in einem MultiEngineProxy laufen lassen.

In der Dokumentation zur FirstSpiritBasicSearch wird dieses Prinzip mit folgendem Schnipsel skizziert:

<?xml version="1.0" encoding="UTF-8"?>

<service ...>

...

<engine class="de.espirit.firstspirit.opt.search.engine.proxy.MultiEngineProxy">

<attribute name="engines" type="list">

<engine idref="_engine_de" />

<engine idref="_engine_en" />

</attribute>

</engine>

</service>

Die konkreten Fragen:

Wie sehen die Tags für die einzelnen Engines (_engine_de, _engine_de, etc...) aus?

Oder besser, hat jemand eventuell ein Beispiel für die vollständige fs-search.xml unter Verwendung des MultiEngineProxy und könnte das zur Verfügung stellen?

Viele Grüße,

Thomas

1 Solution

Accepted Solutions
thoherme
Occasional Observer

Folgender Ansatz konnte erfolgreich angewendet werden:

<?xml version="1.0" encoding="UTF-8"?>
<service class="de.espirit.firstspirit.opt.search.service.proxy.MultiServiceProxy">
<attribute name="services" type="list">
<!-- engine service -->
<service class="de.espirit.firstspirit.opt.search.service.adapter.ServerService">
<server class="de.espirit.firstspirit.opt.search.server.SimpleServer">
<!-- definition engine-->
<engine name="fssMulti1" id="multi1" class="de.espirit.firstspirit.opt.search.engine.proxy.MonitorEngineProxy">
<engine class="de.espirit.firstspirit.opt.search.engine.spider.SpiderEngine">
<attribute name="urls" type="list">
<attribute>https://www-1...</attribute>
...
<attribute>https://www-n...</attribute>
</attribute>
<attribute name="index">index1</attribute>
<attribute name="maxThreads">1</attribute>
<attribute name="threadPriority">1</attribute>
<attribute name="allowed" type="list">
<attribute class="de.espirit.firstspirit.opt.search.engine.spider.link.RegexWebLinkFilter">(www-1...)</attribute>
...
<attribute class="de.espirit.firstspirit.opt.search.engine.spider.link.RegexWebLinkFilter">(www-n...)</attribute>
</attribute>
<attribute name="maxFieldLength">200000</attribute>
<attribute name="maxContentLength">100000</attribute>
<attribute name="maxDocuments">100000</attribute>
<attribute name="maxTime">2h</attribute>
<attribute name="credentials" type="list">
</attribute>
</engine>
</engine>
<!-- further engines -->
...
<engine name="fssMultiN" id="multiN" class="de.espirit.firstspirit.opt.search.engine.proxy.MonitorEngineProxy">
...
<!-- merge engines -->
<engine name="fssMulti" class="de.espirit.firstspirit.opt.search.engine.proxy.MultiEngineProxy">
<attribute name="engines" type="list">
<engine idref="multi1" />
...
<engine idref="multiN" />
</attribute>
</engine>
</server>
<attribute name="createRMI">false</attribute>
<attribute name="bindTo">local</attribute>
<attribute name="localName">fssServer</attribute>
</service>
<!-- timer & Logging services -->
<service class="de.espirit.firstspirit.opt.search.service.RebuildIndexTimerService">
<attribute name="engineURL">fssServer[fssMulti]</attribute>
<attribute name="startTime">22:00</attribute>
<attribute name="period">24h</attribute>
<attribute name="startNow">true</attribute>
</service>
<service class="de.espirit.firstspirit.opt.search.service.adapter.Log4jService">
<attribute name="log4j.rootCategory">DEBUG, INFO, file</attribute>
<attribute name="log4j.appender.file">org.apache.log4j.RollingFileAppender</attribute>
<attribute name="log4j.appender.file.File">fs-search.log</attribute>
<attribute name="log4j.appender.file.MaxFileSize">50MB</attribute>
<attribute name="log4j.appender.file.MaxBackupIndex">0</attribute>
<attribute name="log4j.appender.file.layout">org.apache.log4j.PatternLayout</attribute>
</service>
</attribute>
</service>

 

 

 

View solution in original post

0 Kudos
1 Reply
thoherme
Occasional Observer

Folgender Ansatz konnte erfolgreich angewendet werden:

<?xml version="1.0" encoding="UTF-8"?>
<service class="de.espirit.firstspirit.opt.search.service.proxy.MultiServiceProxy">
<attribute name="services" type="list">
<!-- engine service -->
<service class="de.espirit.firstspirit.opt.search.service.adapter.ServerService">
<server class="de.espirit.firstspirit.opt.search.server.SimpleServer">
<!-- definition engine-->
<engine name="fssMulti1" id="multi1" class="de.espirit.firstspirit.opt.search.engine.proxy.MonitorEngineProxy">
<engine class="de.espirit.firstspirit.opt.search.engine.spider.SpiderEngine">
<attribute name="urls" type="list">
<attribute>https://www-1...</attribute>
...
<attribute>https://www-n...</attribute>
</attribute>
<attribute name="index">index1</attribute>
<attribute name="maxThreads">1</attribute>
<attribute name="threadPriority">1</attribute>
<attribute name="allowed" type="list">
<attribute class="de.espirit.firstspirit.opt.search.engine.spider.link.RegexWebLinkFilter">(www-1...)</attribute>
...
<attribute class="de.espirit.firstspirit.opt.search.engine.spider.link.RegexWebLinkFilter">(www-n...)</attribute>
</attribute>
<attribute name="maxFieldLength">200000</attribute>
<attribute name="maxContentLength">100000</attribute>
<attribute name="maxDocuments">100000</attribute>
<attribute name="maxTime">2h</attribute>
<attribute name="credentials" type="list">
</attribute>
</engine>
</engine>
<!-- further engines -->
...
<engine name="fssMultiN" id="multiN" class="de.espirit.firstspirit.opt.search.engine.proxy.MonitorEngineProxy">
...
<!-- merge engines -->
<engine name="fssMulti" class="de.espirit.firstspirit.opt.search.engine.proxy.MultiEngineProxy">
<attribute name="engines" type="list">
<engine idref="multi1" />
...
<engine idref="multiN" />
</attribute>
</engine>
</server>
<attribute name="createRMI">false</attribute>
<attribute name="bindTo">local</attribute>
<attribute name="localName">fssServer</attribute>
</service>
<!-- timer & Logging services -->
<service class="de.espirit.firstspirit.opt.search.service.RebuildIndexTimerService">
<attribute name="engineURL">fssServer[fssMulti]</attribute>
<attribute name="startTime">22:00</attribute>
<attribute name="period">24h</attribute>
<attribute name="startNow">true</attribute>
</service>
<service class="de.espirit.firstspirit.opt.search.service.adapter.Log4jService">
<attribute name="log4j.rootCategory">DEBUG, INFO, file</attribute>
<attribute name="log4j.appender.file">org.apache.log4j.RollingFileAppender</attribute>
<attribute name="log4j.appender.file.File">fs-search.log</attribute>
<attribute name="log4j.appender.file.MaxFileSize">50MB</attribute>
<attribute name="log4j.appender.file.MaxBackupIndex">0</attribute>
<attribute name="log4j.appender.file.layout">org.apache.log4j.PatternLayout</attribute>
</service>
</attribute>
</service>

 

 

 

0 Kudos