smile-me
I'm new here

FirstSearch web.xml

Jump to solution

99 Seiten Doku gelesen "FirstSpirit SEARCH" und trotzdem bekomme ich die simple Suche nicht zum laufen. Inzwischen spidert die integrierte Lucene zwar die gewünschten Seiten, was noch nicht geht, ist die Suchresultat-Seite. Ich vermute, es ist etwas falsch an der web.xml, allerdings finde ich dazu zuwenig Informationen in der Doku und im Forum.

Hier die Kurzanalyse:

  1. Server-Eigenschaften, Modul FIRSTspirit SEARCH 4.2.454_46518 installiert, FS SEARCH als Web Applikation mit Sichtbarkeit Projekt/Web
  2. Projekt-Eigenschaften, Web Komponente FS SEARCH 4.2.454_46518 hinzugefügt Server "fssServer", Engine "fssEngine", Konfiguration siehe unten
  3. web.xml angepasst in diversen Varianten, die aktuelle siehe unten
  4. Lucene Log meldet, dass Seiten gespidert wurden, mit Luke überprüft
  5. Das Web Suchformular zeigt an, dass keine Engine verwendet wurde (web.xml?), die Suche findet gemäss Log allerdings Treffer (4)

Hat jemand eine funktionierende web.xml oder sieht jemand sonst einen Fehler in der Konfig?

Viiiiiiielen Dank! 🙂

Konfiguration FS SEARCH

<?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">/usr/share/tomcat6/logs/fs-search.log</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>

        <!-- Der eigentliche Suchserver als Service verpackt, damit man ihn starten & stoppen kann -->

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

            <!-- START - Search Server -->

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

                <!-- START - Session Proxy -->

                <engine name="fssEngine" class="de.espirit.firstspirit.opt.search.engine.proxy.MonitorEngineProxy">

               

                    <!-- START - Category Proxy -->

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

                   

                        <!-- START - Localization Proxy -->

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

                            <!-- START - Indexing Engine -->

                            <engine class="de.espirit.firstspirit.opt.search.engine.spider.SpiderEngine">

                                <attribute name="index">/usr/share/tomcat6/webapps/dev_sfs/WEB-INF/searchindex</attribute>

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

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

                                    <attribute>http://dev.kunde.namics.com/</attribute>

                                </attribute>

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

                                    <attribute class="de.espirit.firstspirit.opt.search.engine.spider.link.RegexWebLinkFilter">/de/</attribute>

                                </attribute>

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

                                        <attribute class="de.espirit.firstspirit.opt.search.engine.spider.link.RegexWebLinkFilter">/en/</attribute>

                                 </attribute>                          

                            </engine>

                            <!-- END - Indexing 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/</attribute>

                                </filter>

                            </attribute>

                        </engine>

                        <!-- END - Localization Proxy -->

           

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

                            <filter name="web" class="de.espirit.firstspirit.opt.search.filter.RegexFilter">

                                <attribute name="property">url</attribute>

                                <attribute name="pattern">(/de/)|(/en/)</attribute>

                            </filter>

                        </attribute>

                    </engine>

                    <!-- END - Category Proxy -->

                   

                </engine>

                <!-- END - Session Proxy -->

            </server>

            <!-- END - Search Server -->

           

            <attribute name="createRMI">false</attribute>

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

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

        </service>

       

        <!-- Ein start-/stoppbarer Service, der zyklisch den Suchindex erneut aufbaut. -->

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

            <attribute name="engineURL">fssServer[fssEngine]</attribute>

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

            <attribute name="period">5m</attribute>

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

        </service>

    </attribute>

</service>

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xmlns="http://java.sun.com/xml/ns/j2ee"

         xmlns:web="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

         version="2.4">

    <display-name>FirstSpirit SEARCH</display-name>

    <description>FirstSpirit search engine for spidering and indexing web-site content.</description>

    <servlet>

        <servlet-name>fss-Init</servlet-name>

        <servlet-class>de.espirit.firstspirit.opt.search.admin.web.ServiceServlet</servlet-class>

        <init-param>

            <param-name>service</param-name>

            <param-value>/WEB-INF/fs-search.xml</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

    <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>fssServer</param-value>

        </init-param>

        <init-param>

            <param-name>searchEngine</param-name>

            <param-value>fssEngine</param-value>

        </init-param>

    </servlet>

    <servlet-mapping>

        <servlet-name>fss-Search</servlet-name>

        <url-pattern>*.search</url-pattern>

    </servlet-mapping>

    <welcome-file-list>

        <welcome-file>index.jsp</welcome-file>

    </welcome-file-list>

    <jsp-config>

        <taglib>

            <taglib-uri>fs-search</taglib-uri>

            <taglib-location>/WEB-INF/fs-search.tld</taglib-location>

        </taglib>

    </jsp-config>

</web-app>

fs-search.log

DEBUG 2012-01-02 17:56:02,019 (de.espirit.firstspirit.opt.search.engine.adapter.LuceneEngineAdapter) search "content:test" ...

DEBUG 2012-01-02 17:56:02,054 (de.espirit.firstspirit.opt.search.engine.adapter.LuceneEngineAdapter) search finished (31ms), results: 4

DEBUG 2012-01-02 17:56:02,064 (de.espirit.firstspirit.opt.search.session.proxy.SessionMonitor$SessionMonitorThread) add session: MonitorSessionProxy->ModifySessionProxy->ModifySessionProxy->de.espirit.firstspirit.opt.search.engine.adapter.LuceneEngineAdapter$LuceneSession@c4e21db (1)

DEBUG 2012-01-02 17:56:02,069 (de.espirit.firstspirit.opt.search.session.proxy.SessionMonitor$SessionMonitorThread) started

DEBUG 2012-01-02 17:56:02,071 (de.espirit.firstspirit.opt.search.session.proxy.SessionMonitor$SessionMonitorThread) wait for session: 1800497ms

localhost.log

Jan 2, 2012 5:56:02 PM org.apache.catalina.core.ApplicationContext log

INFO: fss-Search: search time (query=test, engine=fssEngine, available=4): 118ms

Absatzvorlage

CMS_TRIM(level:3)$

$CMS_IF(!isSet(set_st_imports) || set_st_imports != true)$

    <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.Collections, java.util.ArrayList" %>

    <%@ taglib uri="fs-search" prefix="fss" %>

    $CMS_SET(set_st_imports,true)$

$CMS_END_IF$

<fss:getSearchDetails>

    <p><%= totalResults %> Ergebnisse gefunden. </p>

    <p>orderBy: <%= orderBy %></p>

    <p>query: <%= query %></p>

    <p>se (Search Engine): <%= se %></p>

   

    <fss:isTrue><p><%= totalResults %> Ergebnisse gefunden.</p>

      </fss:isTrue>

      <fss:isFalse>

        Keine Ergebnisse gefunden!

      </fss:isFalse>

</fss:getSearchDetails>

Web-Output

0 Ergebnisse gefunden.

orderBy: null

query: null

se (Search Engine): null

   Keine Ergebnisse gefunden!

0 Kudos
1 Solution

Accepted Solutions
smile-me
I'm new here

Puh, ich hab's herausgefunden.

Offenbar ist auf Ebene Apache eine Rewrite Rule eingerichtet. Das Web ist zwar im Verzeichnis dev_kunde installiert, dieses wollte man aber nicht in der URL sehen (also statt /dev_kunde/de/web/homepage.html /de/web/homepage.html). Tomcat weiss davon allerdings nichts und setzt sein Session Cookie mit path=/dev_kunde.

Jedesmal, wenn der Browser nun eine Seite aufruft, findet er für den Request kein passendes Cookie, da das gespeicherte nur für /dev_kunde existiert, fordert eine Seite ohne eigenes Cookie an und Tomcat erstellt brav eine neue Session, wieder mit path=/dev_kunde.

Somit ist die Session der Suchanfrage eine andere wie die der Suchresultatseite, daher auch die Meldungen query=null, se=null etc.

Ich habe in der server.xml das Attribut emptySessionPath ergänzt, und nun wird das Session Cookie immer auf den path=/ gesetzt:

<!-- Define an AJP 1.3 Connector on port 8009 -->

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" emptySessionPath="true" />

View solution in original post

0 Kudos
7 Replies
stephan
I'm new here

Wie sieht denn das Formular aus?

0 Kudos

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

  $CMS_IF(!#global.preview)$

    $CMS_SET(set_ft_seach_label,gc_search_field_default_text)$

  $CMS_ELSE$

    $CMS_SET(set_ft_seach_label,"No search in preview")$

  $CMS_END_IF$

  <input class="search" name="query" value="$CMS_VALUE(set_ft_seach_label)$" />

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

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

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

  $--<input type="hidden" name="se" value="fssEngine" /> steht in web.xml --$

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

  <input type="hidden" name="resultsURL" value="$CMS_REF(ps_search_result,abs:1)$" />

</form>

Ich habe schon versucht, den Wert für se zu verändern, sowohl im Formular als auch in der web.xml. Werte != "fssEngine" werden mit einer Fehlermeldung quittiert, fssEngine scheint also korrekt zu sein. Trotzdem ist die Resultatseite dann mit der Zeile versehen:

se (Search Engine): null

0 Kudos
klein
Crownpeak employee

Hallo,

leider finde ich auch keinen Fehler. Könnte ich bitte den kompletten Quellsource der Suchergebnisseite haben? (also die entsprechende JSP-Quellcode und zwar nicht vom Browser, sondern von dem Dateisystem)

Danke!

0 Kudos
klein
Crownpeak employee

Bitte ersetzen Sie Ihre search_result.jsp durch die angehängte, dann testen Sie die Suche _direkt_ auf dieser Seite (also nicht über homepage.html) und geben Sie Bescheid inkl. Logs, wie die Suche danach funktioniert

0 Kudos

Besten Dank für das File. Installiert und getestet, hier das Resultat:

Browser

0 Ergebnisse gefunden.

orderBy: null

query: null

se (Search Engine): null

   Keine Ergebnisse gefunden!

fs_search.log

DEBUG 2012-01-04 13:26:47,220 (de.espirit.firstspirit.opt.search.engine.adapter.LuceneEngineAdapter) search "content:ein" ...

DEBUG 2012-01-04 13:26:47,220 (de.espirit.firstspirit.opt.search.engine.adapter.LuceneEngineAdapter) search finished (0ms), results: 10

DEBUG 2012-01-04 13:26:47,223 (de.espirit.firstspirit.opt.search.session.proxy.SessionMonitor$SessionMonitorThread) add session: MonitorSessionProxy->ModifySessionProxy->ModifySessionProxy->de.espirit.firstspirit.opt.search.engine.adapter.LuceneEngineAdapter$LuceneSession@5e2b105d (3)

DEBUG 2012-01-04 13:26:47,224 (de.espirit.firstspirit.opt.search.session.proxy.SessionMonitor$SessionMonitorThread) wait for session: 1659777ms

localhost.2012-01-04.log

Jan 4, 2012 1:26:47 PM org.apache.catalina.core.ApplicationContext log

INFO: fss-Search: search time (query=ein, engine=fssEngine, available=10): 4ms

0 Kudos
klein
Crownpeak employee

Aus welchem Grund auch immer (leider sehe ich immer noch keinen Fehler im Quellcode der Suchergebnisseite) werden die POST-Paramter wohl nicht übertragen. Kann es sein, dass die Suche funktioniert, wenn Sie im Formular method="GET" statt method="POST" angeben?

0 Kudos
smile-me
I'm new here

Puh, ich hab's herausgefunden.

Offenbar ist auf Ebene Apache eine Rewrite Rule eingerichtet. Das Web ist zwar im Verzeichnis dev_kunde installiert, dieses wollte man aber nicht in der URL sehen (also statt /dev_kunde/de/web/homepage.html /de/web/homepage.html). Tomcat weiss davon allerdings nichts und setzt sein Session Cookie mit path=/dev_kunde.

Jedesmal, wenn der Browser nun eine Seite aufruft, findet er für den Request kein passendes Cookie, da das gespeicherte nur für /dev_kunde existiert, fordert eine Seite ohne eigenes Cookie an und Tomcat erstellt brav eine neue Session, wieder mit path=/dev_kunde.

Somit ist die Session der Suchanfrage eine andere wie die der Suchresultatseite, daher auch die Meldungen query=null, se=null etc.

Ich habe in der server.xml das Attribut emptySessionPath ergänzt, und nun wird das Session Cookie immer auf den path=/ gesetzt:

<!-- Define an AJP 1.3 Connector on port 8009 -->

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" emptySessionPath="true" />

0 Kudos