FirstSearch web.xml
Author: smile-me
Publication Date: 1/3/2012 7:58
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:
- Server-Eigenschaften, Modul FIRSTspirit SEARCH 4.2.454_46518 installiert, FS SEARCH als Web Applikation mit Sichtbarkeit Projekt/Web
- Projekt-Eigenschaften, Web Komponente FS SEARCH 4.2.454_46518 hinzugefügt Server "fssServer", Engine "fssEngine", Konfiguration siehe unten
- web.xml angepasst in diversen Varianten, die aktuelle siehe unten
- Lucene Log meldet, dass Seiten gespidert wurden, mit Luke überprüft
- 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!
Tags: firstsearch, suche
-
Author: smile-me - 1/4/2012 15:09
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
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Kommentare
1 Kommentar