Hallo Peter,
Das ist schon mal der richtige Ansatz. name="r" verwende ich nicht (hat bei mir nicht funktioniert).
Wir verwenden diesen Weg:
Beim Absenden des Formulars wird ein JavaScript "dazwischen geschaltet" (z.B. onsubmit="return addRefinement();").
In dem JavaScript wird der Inhalt des Feldes "q" geändert. Also
- Wert des Feldes "q" holen
- Source hinzufügen (oder sonstwas - z.B. wenn nur nach bestimmten Merkmalen gesucht werden soll)
- geänderten Suchstring in "q" speichern
- Formular absenden
Dann steht z.B. im Feld "q":
- nach einem bestimmten Wort in einer Source suchen:
((Urlaub)) (corporate/tree:"Top/Source/SAB_sfo") - und als Bsp. nach bestimmten Merkmalen (die Feldnamen existieren in dem Fall nur bei uns)
corporate/tree:"Top/Source/SAB_sfo" AND ( corporate/tree:"Top/sfo_vabt/AB") AND (sfo_datever<=2015/01/01))
Wegen dem "corporate/tree ..." im Suchstring. bei der Ausgabe wird das wieder entfernt. Ebenso alle anderen Angaben, wenn nach bestimmten Merkmalen gesucht wird.
Falls JavaScript keine Alternative ist, verwenden wir in einem anderen Projekt noch die Alternative (da wird nur auf die Source eingeschränkt):
form-Tag: <form id="searchform" action="" method="post" accept-charset="UTF-8">
In jeder Seite, in dem das Sucheingabefeld steht, nachfolgenden Code ganz am Anfang der Datei einfügen:
String searchStringInput = SABConvert.getRequestStringForForm(request.getParameter("help-form"),"",200);
if (!searchStringInput.equals("")) {
String q = "(" + searchStringInput + " language:$CMS_VALUE(#global.language.abbreviation.toLowerCase)$) (corporate/tree:\"Top/Source/SAB_Internet\")";
RequestDispatcher dispatcher = request.getRequestDispatcher("/de/do.search?q="+q+"&b=0&hf=10&l=$CMS_VALUE(#global.language.toString().toLowerCase())$&redirectUrl=$CMS_REF(ss_searchresult)$&errorUrl=$CMS_REF(pageref:"error")$");
dispatcher.forward(request, response);
}
SABConvert.getRequestStringForForm ... = Abfragen des Parameters (bestimmte Länge, null, ... - spez. Methode von uns)
help-form = name des Sucheingabefeldes
$CMS_REF(ss_searchresult)$ = Suchergebnisseite
Funktioniert auch (allerdings auch mit dem "corporate/tree ..." im Ergbnis(Such)string)
Ob und wie das mit dem Feld "r" geht, muss jemand anderes beantworten.
Grüße
Andreas