ampersand83
I'm new here

Probleme mit FS-Search

Hallo zusammen,

seit zwei Tagen versuche ich jetzt schon eine Suche mit FS-Search einzurichten, bekomme sie aber nicht zum laufen.

Gestern wurde mir zumindest laut Dateinamen ein index.cfg erzeugt, nur war der, wie mir Luke bestätigte total leer.

Heute morgen kommt allerdings beim Neubauen des Index in den Logs nur die Fehlermeldung

java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String

    at de.espirit.firstspirit.opt.search.engine.spider.SpiderEngine.rebuild(SpiderEngine.java:263)

    at de.espirit.firstspirit.opt.search.engine.adapter.LuceneEngineAdapter.rebuild(LuceneEngineAdapter.java:228)

    at de.espirit.firstspirit.opt.search.service.RebuildIndexTimerService.run(RebuildIndexTimerService.java:35)

    at de.espirit.firstspirit.opt.search.service.AbstractTimerService$Execution.run(AbstractTimerService.java:174)

    at java.util.TimerThread.mainLoop(Timer.java:512)

    at java.util.TimerThread.run(Timer.java:462)

Ich kann mir gerade nicht erklären, was da gemacht wird.

Meine fs-search.xml sieht so aus:

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

<service class="de.espirit.firstspirit.opt.search.service.proxy.MultiServiceProxy">

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

        <service class="de.espirit.firstspirit.opt.search.service.adapter.Log4jService">

            <attribute name="log4j.rootCategory">DEBUG, file</attribute>

            <attribute name="log4j.appender.file">org.apache.log4j.RollingFileAppender</attribute>

            <attribute name="log4j.appender.file.File">/opt/tomcat-latest/logs/fs-search.log</attribute>

            <attribute name="log4j.appender.file.MaxFileSize">5MB</attribute>

            <attribute name="log4j.appender.file.MaxFileSize">5MB</attribute>

            <attribute name="log4j.appender.file.MaxBackupIndex">5</attribute>

            <attribute name="log4j.appender.file.layout">org.apache.log4j.PatternLayout</attribute>

            <attribute name="log4j.appender.file.layout.ConversionPattern">%-5p %d (%c) %m%n</attribute>

        </service>

        <service class="de.espirit.firstspirit.opt.search.service.adapter.ServerService">

            <server class="de.espirit.firstspirit.opt.search.server.SimpleServer">

                <engine id="_article" name="article" class="de.espirit.firstspirit.opt.search.engine.spider.SpiderEngine">

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

                        <attribute>http://webseite.com/homepage.html</attribute>

                    </attribute>

                    <attribute name="index">/opt/tomcat-latest/webapps/dev-cobablog/WEB-INF/searchIndex/article</attribute>

                    <attribute name="maxThreads">1</attribute>

                    <attribute name="threadPriority">1</attribute>

                    <attribute name="maxFieldLength">10000</attribute>

                    <attribute name="maxContentLength">16384</attribute>

                    <attribute name="maxTime">120m</attribute>

                    <attribute name="locales" type="map">

                        <attribute name="de">DE</attribute>

                        <attribute name="en">EN</attribute>

                    </attribute>

                    <attribute name="localeField">language</attribute>

                    <attribute name="acceptUndefinedResults">true</attribute>               

                </engine>

            </server>

            <attribute name="bindTo">local</attribute>

            <attribute name="localName">searchServer</attribute>

        </service>

        <service class="de.espirit.firstspirit.opt.search.service.RebuildIndexTimerService">

            <attribute name="engineURL">searchServer[article]</attribute>

            <attribute name="startTime">6:00</attribute>

            <attribute name="period">24h</attribute>

            <attribute name="startNow">true</attribute>

        </service>

    </attribute>

</service>

Was mache ich hier denn noch falsch? Aber selbst wenn mir wieder eine index.cfg erzeugt werden sollte, habe ich ja noch immer das Problem, dass in dem Index nichts drin steht. Hat irgenjemand eine Idee, was ich noch machen könnte? Bin langsam echt ein wenig ratlos.

Viele Grüße,

Stefan

0 Kudos
5 Replies
ampersand83
I'm new here

So, das Problem mit der ClassCastException habe ich gelöst und es wird auch wieder eine index.cfg generiert. Dennoch muss es bei der Erzeugung des Indexes noch einen Fehler geben, denn der Index wird bei Neuerstellung nicht mehr gelöscht, sondern einfach weitere Ordner hinzugefügt.

0 Kudos

Mittlerweile wird mir ein Index erzeugt. Mit Luke kann ich mir den auch anschauen und durchsuchen.

Auf der Webseite klappt das mit einem Begriff den ich in Luke gefunden habe aber nicht.

Der Aufruf erfolgt mit folgendem Formular:

<form method="post" action="do.search">

<input class="search" name="query" value="Suche" />

<input type="hidden" name="locale" value="DE" />

<input type="hidden" name="initialSize" value="200" />

<input type="hidden" name="pageSize" value="20" />

<input type="hidden" name="maxResults" value="200" />

<input type="hidden" name="singleton" value="true" />

<input type="hidden" name="resultsURL" value="suchergebnisseite.jsp" />

<input type="submit" class="searchBtn" value="s">

</form>

Auf der Ergebnisseite will ich dann zum Test nur entweder die absolute Anzahl an Treffern ausgeben, wenn etwas gefunden wurde und wenn nichts gefunden wurde den Suchbegriff anzeigen.

<fss:getSearchDetails>

<fss:isTrue>

<%= totalResults %>

</fss:isTrue>

<fss:isFalse>

<%= query %>

</fss:isFalse>

</fss:getSearchDetails>

Aber was ich auch mache, die Variablen werden nicht gefüllt und sind immer null.

Irgendwelche Ideen?

0 Kudos

Habe gerade eben nochmal in die Logs geschaut. Hier wird mir auch angezeigt, dass ein Suchbegriff gefunden wurde.

DEBUG 2013-07-17 16:33:09,258 (de.espirit.firstspirit.opt.search.engine.adapter.LuceneEngineAdapter) search "+language:de +content:test" ...

DEBUG 2013-07-17 16:33:09,258 (de.espirit.firstspirit.opt.search.engine.adapter.LuceneEngineAdapter) search finished (0ms), results: 1

Die Tag-Library liefert mir aber nach wie vor überhaupt nichts zurück. Was mache ich hier denn noch falsch?

0 Kudos
e_w_
I'm new here

Nachtrag

Tomcat-Server-Log:

INFO: fss-Search: search time (query=bei, engine=article, available=1): 2ms

Log4j Log liefert zusätzlich noch:

DEBUG 2013-07-17 19:21:29,728 (de.espirit.firstspirit.opt.search.web.SearchCursor) SearchCursor (CacheSessionProxy->de.espirit.firstspirit.opt.search.engine.adapter.LuceneEngineAdapter$LuceneSession@95cb82f) removed from HttpSession

DEBUG 2013-07-17 19:21:29,731 (de.espirit.firstspirit.opt.search.web.SearchCursor) SearchCursor (CacheSessionProxy->de.espirit.firstspirit.opt.search.engine.adapter.LuceneEngineAdapter$LuceneSession@3a894c98) removed from HttpSession

Somit ist kein SearchCursor mehr in der HttpSession vorhanden, der Werte wie 'query', 'totalResults' etc. hält. Eine Ausgabe dieser Attribute via pageContext.findAttribute() oder JSTL liefert zu erwartende Ergebnisse - default Werte wie 0 für 'totalResults' oder null für 'query'). Die Frage ist wann wird der SearchCursor aus der Session entfernt. Eine Exception ist laut Logs nicht aufgetreten.

0 Kudos
MichaelaReydt
Community Manager

Hallo Stefan und Eric,

wurde für dieses Problem eine Lösung gefunden oder ist die Frage weiterhin offen?

Sollte dies der Fall sein, würde ich euch bitten, euch an unser Helpdesk zu wenden.

Sollte eine Lösung gefunden worden sein, wäre es super, wenn ihr diese hier darstellen würdet.

Viele Grüße

Michaela

0 Kudos