Search the FirstSpirit Knowledge Base
Hallo,
wir nutzen zur Exalead Cloudview 5 (und hoffentlich bald 6.V2013).
Bei der Suche auf der Webseite kann der Nutzer wählen, ob die Erbegnisse als HTML (also auf der Seite) oder als csv-Datei angezeigt werden sollen.
Wird nach bestimmten Merkmalen gesucht und die Ausgabe HTML gewählt, so werden z.B. 3.000 Suchtreffer gefunden.
Wird mit der gleichen Sucheinstellung csv gewählt, so werden weniger - immer unterschiedlich viele, aber nie die Anzahl wie bei HTML ausgegeben. Z.B.. einmal 344, einmal 1.155
An was könnte das liegen? In Logfiles wird keine Fehlermeldung ausgegeben.
Der Parameter hitsPerPage scheint keine Rolle zu spielen (habe ihn auf 10000 stehen).
Bei Ausgabe in CSV wird der Parameter hf im Suchformular auf 5000 gesetzt. Daran sollte es auch nicht liegen.
Sind es eventuell zu viele Datensätze, so dass irgendwann ein Timeout kommt? So etwas wird mir aber nicht angezeigt oder protokolliert.
Hat jemand eine Idee?
Grüße
Andreas
Hallo Andreas,
wie habt ihr denn die Anzeige als csv-Datei realisiert? Ich würde jetzt davon ausgehen, dass der Request, der an den Server geschickt wird, in beiden Fällen derselbe ist. Darum wundert es mich gerade auch, dass ihr dann unterschiedliche Ergebnisse erhaltet.
Viele Grüße
Donato
Hallo Donato,
das hab ich ja auch gedacht 😉
Auf dem Suchformular wähle ich CSV/HTML aus, je nachdem was gewählt wird, wird eine andere Seitenvorlage gewählt.
Das Formualr sieht wie folgt aus:
<input type="hidden" name="b" value="0"/>
<input type="hidden" name="l" value="de"/>
<input type="hidden" name="hf" value="10000"/>
<input type="hidden" name="redirectUrl" value="suchergebnisrgl.jsp"/>
<input type="hidden" name="errorUrl" value="suchergebnisrgl.jsp?error"/>
<input id="searchq" type="hidden" name="q" value="" />
"q" wird wie bei der HTML-Suche zusammengebaut (es kann nach unterschiedlichen merkmalen gesucht werden).
In der Ergebnisseite iteriere ich über die Ergebnisse und schreibe das in csv:
<search:container hasResults="true" redirectUrl="suchergebnis_rgl_csv.jsp" errorUrl="suchergebnis_rgl_csv.jsp" hitsPerPage="10000">
<search:loop_hits><%csvOutput = ""; %>
<search:hits_field key="sfo_nummer"><% csvOutput += value + ";"; %></search:hits_field><search:hits_field key="sfo_name"><% csvOutput += value + ";";%></search:hits_field>
<search:hits_field key="sfo_doctype"><% csvOutput += value + ";"; %></search:hits_field><search:hits_field key="sfo_handbuch"><% csvOutput += value + ";"; %></search:hits_field>
<search:hits_field key="sfo_datebesch"><% csvOutput += ExaleadUtil.convertStringDate(value) + ";"; %></search:hits_field>
<search:hits_field key="sfo_datever"><% csvOutput += ExaleadUtil.convertStringDate(value) + ";"; %></search:hits_field>
<search:hits_field key="sfo_dateerst"><% csvOutput += ExaleadUtil.convertStringDate(value) + ";"; %></search:hits_field>
<search:hits_field key="sfo_vabt"><% csvOutput += value + ";"; %></search:hits_field><search:hits_field key="sfo_info"><% csvOutput += value + ";"; %></search:hits_field>
<%
csvOutput += "\n";
fileOut.write(csvOutput.getBytes("ISO-8859-1"));
%></search:loop_hits>
</search:container>
Die Seitenvorlage für CSV im Anhang.
Gruß
Andreas
Hallo Andreas,
es kann ja eigentlich nur daran liegen, dass die Suchanfrage an Exalead unterschiedlich ist. Sonst wären die Ergebnisse ja gleich.
Ich würde dir empfehlen mal zwei Standalone JSP Seiten zu bauen. Die eine erzeugt die HTML-Ausgabe, die andere die CSV Ausgabe. Sind die Ergebnismengen dann identisch?
Die hochgeladene Vorlage hilft nicht wirklich weiter. Da sind nicht alle Seiten enthalten und es werden auch Formatvorlagen genutzt.
Viele Grüße
Christoph
Hallo Christoph,
es gibt zwei JSP-Seiten, eine für HTML mit
<search:container hasResults="true" ... hitsPerPage="10000">
und eine für CSV mit
<search:container hasResults="true" ... hitsPerPage="10000">
Die Seiten sind so weit identisch, nur dass jeweils eine andere Ausgabe vorgenommen wird.
Ich habe nun mal bei der HTML-Ausgabe die hitsPerPage erhöht. Es werden nicht alle Treffer ausgegeben.
Das liegt dann whrscheinlich an dem LimitRequestLine in der httpd.conf
Wenn ich die Zahl erhöhe, bekomme ich auch mehr Treffer ausgegeben.
Nun bekomme ich in der HTML-Ansicht rund 3.500 Treffer angezeigt.
Das erhöhen der LimitRequestLine scheckt mir absolut nicht.
Nun scheint es so, dass ein Treffer Probleme bereitet.
Wenn ich Suchergebnisse einschränke müssten dafür rund 1.500 Treffer angezeigt werden. Das ist aber nicht der Fall.
Fehlermeldungen bekomme ich leider keine ausgegeben. Auch nicht, wenn ich den Debug Modus aktiviere.
Ich kann nun versuchen, ob ich die Suchabfragen so gestallten kann, dass ich den Treffer finde der vermutlich Probleme macht.
Oder gibt es eine Möglichkeit "igendetwas" "irgendwo" einzustellen, damit bei einem fehlerhaften Element eine Fehlermeldung ausgegeben wird und nicht einfach abgebrochen wird (und die bis dahin gefundenen Elemente ausgegeben werden)?
Grüße
Andreas
Hallo Andreas,
ich bin mir noch nicht sicher, ob ich das Problem verstanden habe:
Oder hat die Unterscheidung zwischen HTML und CSV Ausgabe jetzt gar nichts mehr mit deinen akuten Problemen zu tun?
Hallo Christoph,
- Du sagst die Verwendung der Taglib ist in beiden Fällen genau gleich?
- Die Suchparameter sind damit auch genau gleich?
Ja.
- Damit sollte doch auch die Länge des HTTP-Requests für beide Fälle exakt gleich lang sein?
m.M . Nein. Da in der HTML-Datei die Ergebnisse anders dargestellt werden (Navigation, Formatierung) als in der CSV. Ausser der HTTP-Request ist das, was von Exalead geliefert wird, dann ja.
Oder hat die Unterscheidung zwischen HTML und CSV Ausgabe jetzt gar nichts mehr mit deinen akuten Problemen zu tun?
Das scheint der Fall zu sein. Allerdings bin ich mir da noch nicht so sicher. Ich müsste erst sicher sein, dass wirklich alle Ergebnisse ausgegeben werden (auf einer Seite und nicht auf mehreren), was aktuell nicht der Fall ist.
Bsp: Ich suche nach den gleichen Parametern.
Es werden 4187 Treffer gefunden. In der csv-Datei werden 4187 ausgegeben und in der HTML ebenso 4187 passt also.
Somit würde ich davon ausgehen, dass um die 4000 Treffer ausgegeben werden können.
Bei einer weiteren Suche werden 2117 Treffer gefunden, aber sowohl in der HTML als auch in der csv Ausgabe nur 1177 Treffer ausgegeben
Das mit den LimitRequestLine war ein Experiment, scheint aber doch nicht den Einfluß zu haben, wie ich dachte.
Es wird immer merkwürdiger ... das Verhalten läßt sich nicht immer nachvollziehen. Einmal werden alle Treffer ausgegeben und das nächste mal wieder nicht.