WebToDate/Fulltext/Reference: Porovnání verzí
| Řádek 41: | Řádek 41: | ||
* Poradny a rozhovory | * Poradny a rozhovory | ||
* Kalendář akcí | * Kalendář akcí | ||
Poté jsou atributy vyhledaných objektů ze všech datových zdrojů seřazeny do jediného seznamu, který je vrácen. Možnost formátování výsledku hledání je omezena na položky společné pro všechny datové zdroje jako nadpis, datum apod. | Poté jsou atributy vyhledaných objektů ze všech datových zdrojů seřazeny do jediného seznamu, který je vrácen. Možnost formátování výsledku hledání je omezena na položky společné pro všechny datové zdroje jako nadpis, datum apod. | ||
Verze z 22. 8. 2009, 23:08
Veřejný skript pro hledání ve zprávách
Hledání ve zprávách se provádí pomocí jediného skriptu:
fulltxt.php – zobrazuje seznam výsledků vyhledávání
Při volání skriptu je nutné zadat kompletní cestu, která je pro modul Fulltext:
/scripts/modules/fulltext/
Veřejný skript pro zobrazení výsledků pak bude mít toto URL:
/scripts/modules/fulltext/fulltxt.php
Skript prohledává pouze databázi zpráv, možná kritéria jsou:
- Fulltextová vyhledávací podmínka
- Kategorie
- Publikace
- Jazyk
- Rozsah dat od – do
Veřejný skript pro globální hledání
Globální hledání ve více datových zdrojích je umožněno skriptem:
globalsearch.php – zobrazuje seznam výsledků vyhledávání
Při volání skriptu je nutné zadat kompletní cestu, která je pro modul Fulltext:
/scripts/modules/fulltext/
Veřejný skript pro zobrazení výsledků pak bude mít toto URL:
/scripts/modules/fulltext/globalsearch.php
Tento skript prohledává nejen zprávy, ale v případě, že je v rámci systému WebToDate nainstalován modul Diskuze, Poradny a rozhovory nebo Kalendář akcí, také objekty těchto modulů. Najednou tedy mohou být prohledávány tyto datové zdroje:
- Zprávy
- Diskuze
- Poradny a rozhovory
- Kalendář akcí
Poté jsou atributy vyhledaných objektů ze všech datových zdrojů seřazeny do jediného seznamu, který je vrácen. Možnost formátování výsledku hledání je omezena na položky společné pro všechny datové zdroje jako nadpis, datum apod.
Jaké výrazy lze při hledání používat
Jednoduché hledání
Pokud hledáme jediné slovo, stačí je jednoduše zapsat do vyhledávacího formuláře. Musíme však dát pozor na to, že dolní hranice délky slova je v závislosti na typu vyhledávacího serveru a jeho nastavení omezena (např. na 3 písmena). Kratší slovo pak nemůže být nikdy nalezeno.
Vyhledávání sousloví
Vyhledáváme-li několik slov najednou (např. řetězec "milá paní"), lhostejno jestli uzavřených v uvozovkách či nikoliv, vyhledají se záznamy s touto přesnou frází.
Výjimku činí vyhledávací stroj Swish++ - zde se vyhledají se pouze záznamy se všemi částmi výrazu. Je zřejmé, že např. výraz "rozhovor s premiérem" tedy nemůže nikdy skončit úspěšně, jelikož jednopísmenné slovo je ignorováno.
Logické operátory
Lze používat logické operátory AND (a zároveň), OR (nebo), NOT (negace). Operátor NOT má vyšší prioritu než zbylé dva operátory. Např. výraz červená AND NOT bílá vybere všechny záznamy, v nichž se vyskytuje slovo červená a zároveň jsou prosty slova bílá.
Závorky
Současně s logickými operátory můžeme jejich prioritu určovat explicitně závorkami, např. výraz červená OR (bílá AND černá) vybere všechny záznamy, ve kterých je přítomno slovo červená nebo záznamy, ve kterých se vyskytují slova bílá a černá současně.
Hvězdičková konvence
Jestliže uvedeme na konci hledaného slova hvězdičku, vyhledají se všechna slova, která začínají specifikovaným řetězcem znaků. Např. na základě výrazu hla* se vyhledají slova hladina, hlas, hlava, hlavní atp.
Funkčnost výrazů sestavených na základě kombinací technik popsaných v předchozích kapitolách není zaručena.
Klíčová slova
Všechny vyhledávací skripty
Klíčová slova použitelná v předloze vyhledávací stránky
| Klíčová slova použitelná v předloze – chybové stavy a další podmínky | ||
| Klíčové slovo | Význam | Poznámka |
| <!--WTD_FULLTXT(LIST)--> | Seznam nalezených | Reprezentuje seznam nalezených záznamů |
| <!--WTD_FULLTXT(NAVIG)--> | Navigační lišta | Reprezentuje místo, kam se vloží navigační lišta |
| <!--WTD_FULLTXT(LABEL)--> | Výpis výsledků | Reprezentuje uvozující nadpis výpisu výsledků (např. "Dokument 1 až 10 z 50") |
| Klíčová slova použitelná v předloze – chybové stavy a další podmínky | ||
| Klíčové slovo | Význam | Poznámka |
| <!--WTD_IF(WRONGDATEFROM,"")--> | Špatný formát data od | |
| <!--WTD_IF(WRONGDATETO,"")--> | Špatný formát data do | |
Tato klíčová slova se používají ve formátu
<!--WTD_IF(příznak,hláška)-->
například:
<!--WTD_IF(WRONGDATETO,"Chybný formát data v poli Datum do.")-->
| Klíčová slova použitelná v uvozujícím nadpisu výpisu výsledků při úspěšném hledání | ||
| Klíčové slovo | Význam | Poznámka |
| <!--WTD_FULLTXT(FROM)--> | Počet od | Počáteční pořadové číslo záznamu na stránce v seznamu nalezených |
| <!--WTD_FULLTXT(TO)--> | Počet do | Koncové pořadové číslo záznamu na stránce v seznamu nalezených |
| <!--WTD_FULLTXT(TOTAL)--> | Počet celkem | Počet nalezených záznamů celkem |
| Klíčová slova použitelná v definici navigační lišty | ||
| Klíčové slovo | Význam | Poznámka |
| <!--WTD_NAVIG(URL)--> | Odkaz | Klíčové slovo je nahrazováno za odkaz na určitou stránku v rámci stránkování seznamu |
| <!--WTD_NAVIG(NUMBER)--> | Číslo stránky | Klíčové slovo je nahrazováno za pořadové číslo určité stránky v rámci stránkování seznamu |
Vyhledávání ve zprávách
| Klíčová slova použitelná v předloze vyhledávací stránky
Tato klíčová slova lze použít ve vyhledávacím formuláři | ||
| Klíčové slovo | Význam | Poznámka |
| <!--WTD_FULLTXT(SEARCHTEXT)--> | Hledaný text | Hledaný text ve formuláři |
| <!--WTD_FULLTXT(SEARCHTEXTENC)--> | Zakódovaný hledaný text | Hledaný text zakódovaný pro bezproblémové použití v URL parametru (vyhovující RFC standardu) |
| <!--WTD_FULLTXT(DATEFROM)--> | Datum od | Datum od ve vyhledávacím formuláři |
| <!--WTD_FULLTXT(DATETO)--> | Datum do | Datum do ve vyhledávacím formuláři |
| <!--WTD_FULLTXT(LANGUAGES)--> | Jazyky | Seznam jazyků ve vyhledávacím formuláři, vracený uvnitř HTML elementů <option/>. |
| <!--WTD_FULLTXT(PUBLICATIONS)--> | Publikace | Seznam publikací ve vyhledávacím formuláři, vracený uvnitř HTML elementů <option/>. |
| <!--WTD_FULLTXT(INCLUDE_SUBCATEGORIES)--> | Hledat včetně podkategorií | Pokud je specifikována kategorie pomocí parametru categid (např. v hidden poli formuláře), lze použít tuto možnost s vyhledáváním včetně podkategorií. |
| <!--WTD_FULLTXT(SORT_RANK)--> | Zvoleno třídění podle relevance | Používá se v definici radiopřepínače pro volbu třídění, viz níže |
| <!--WTD_FULLTXT(SORT_DATE)--> | Zvoleno třídění podle času | Používá se v definici radiopřepínače pro volbu třídění, viz níže |
| Klíčová slova použitelná ve stylu nalezených výsledků | ||
| Klíčové slovo | Význam | Poznámka |
| <!--WTD_F(NUMBER)--> | Číslování řádků | |
| <!--WTD_F(ID)--> | ID zprávy | |
| <!--WTD_F(TITLE)--> | Nadpis | |
| <!--WTD_F(TITLELINK)--> | Odkaz nadpisu | |
| <!--WTD_F(EXCERPT)--> | Fragment textu | Fragment textu s vyhledaným výrazem. |
| <!--WTD_F(DESCRIPTION)--> | Popis | |
| <!--WTD_F(DATE)--> | Datum zprávy | |
| <!--WTD_F(CATEGORYID)--> | Číslo kategorie | |
| <!--WTD_F(CATEGORY)--> | Název kategorie | |
| <!--WTD_F(PIC)--> | Obrázek | |
| <!--WTD_F(ALTPIC)--> | Alt. obrázek | |
| <!--WTD_F(LANGUAGEID)--> | ID jazyka | |
| <!--WTD_F(LANGUAGE)--> | Název jazyka | |
| <!--WTD_F(SOURCE)--> | Autor | |
K výše uvedeným klíčovým slovům existuje alternativa typu WTD_IF(…NULL) a WTD_IF(…NOTNULL) stejně jako u stylů pro zprávy (viz také kapitola 4.5).
V seznamu zpráv se nahrazují obsahem i klíčová slova instancí položek z databáze zdrojů ve zprávách. Pokud se např. ve zprávách používají ilustrační obrázky uložené jako instance zdrojů do pole Obrázek databáze zpráv, lze ve stylu pro seznam nalezených zpráv ve výpisu použít klíčové slovo <!--WTD_F(PIC)--> a obrázek se zobrazí stejně jako v seznamech zpráv WebToDate.
Klíčové slovo EXCERPT zobrazuje v rámci možností fragment textu s vyhledaným výrazem, a to podle následujících pravidel:
- Pokud je hledaný výraz přítomen v těle zprávy, zobrazí fragment těla zprávy s vyhledaným výrazem uprostřed a s +-40 znaků okolo. Oblast je rozšířená na celá slova. Pokud se v těle vyskytuje vyhledávaný výraz opakovaně, bere se v úvahu jeho prvý výskyt.
- Jestliže je výraz přítomen pouze v popisu zprávy, nahradí se klíčové slovo EXCERPT za celý popis zprávy, přičemž se v něm zvýrazní všechny výskyty hledaného výrazu.
- Jestliže výraz není přítomen v těle ani v popisu (zpráva jej tedy obsahuje ve svém názvu nebo ve jménu autora), nahradí se klíčové slovo EXCERPT za popis zprávy bez jakéhokoliv zvýrazňování.
Slova hledaného výrazu se označují HTML tagem <span class="keyword">…</span>.
Výchozí třídění seznamu zpráv ve výsledku hledání je vždy dle data a času zprávy sestupně. Ve vyhledávacím formuláři ale lze zvolit třídění podle relevance, a to buď pevně nebo na základě volby uživatele.
Pokud je požadováno vždy třídění podle relevance, vložte do vyhledávacího formuláře kód
<input type="hidden" name="sort" value="rank" />
Pokud může uživatel třídění volit, použijte kód
Třídění podle:<br />
<input type="radio" name="sort" value="rank" <!--WTD_FULLTXT(SORT_RANK)-->/> Relevance
<input type="radio" name="sort" value="date" <!--WTD_FULLTXT(SORT_DATE)-->/> Času
Globální hledání
| Klíčová slova použitelná v předloze vyhledávací stránky
Tato klíčová slova lze použít ve vyhledávacím formuláři. | ||
| Klíčové slovo | Význam | Poznámka |
| <!--WTD_FULLTXT(SEARCHTEXT)--> | Hledaný text | Hledaný text ve formuláři |
| <!--WTD_FULLTXT(SEARCHTEXTENC)--> | Zakódovaný hledaný text | Hledaný text zakódovaný pro bezproblémové použití v URL parametru (vyhovující RFC standardu) |
| <!--WTD_FULLTXT(DATEFROM)--> | Datum od | Datum od ve vyhledávacím formuláři |
| <!--WTD_FULLTXT(DATETO)--> | Datum do | Datum do ve vyhledávacím formuláři |
| <!--WTD_FULLTXT(LANGUAGES)--> | Jazyky | Seznam jazyků ve vyhledávacím formuláři, vracený uvnitř HTML elementů <option/>. |
| Klíčová slova použitelná v předloze – chybové stavy a další podmínky | ||
| Klíčové slovo | Význam | Poznámka |
| <!--WTD_IF(SEARCHPROCEEDED,"")--> | Vyhledávání bylo provedeno | Kód se vloží v případě, že skript již vrací výsledky vyhledávání (nikoliv výchozí stránku s prázdným formulářem) |
Díky klíčovému slovu SEARCHPROCEEDED podporuje modul Fulltext funkci "vyhledat jinde", která umožňuje v případě, že uživatel zadá nějaký vyhledávací výraz a zobrazí seznam nalezených zpráv, do stránky vložit odkaz typu:
Vyhledat "hledane_slovo" v diskusích.
Vyhledat "hledane_slovo" v poradnách.
Tyto odkazy lze vložit pomocí klíčového slova:
<!--WTD_IF(SEARCHPROCEEDED," <a href='/scripts/modules/disc/search.php?searchtext=<!--WTD_FULLTXT(SEARCHTEXT)-->'> Vyhledat "<!--WTD_FULLTXT(SEARCHTEXT)--> " v diskuzích.</a>")-->
<!--WTD_IF(SEARCHPROCEEDED," <a href='/scripts/modules/advice/fulltxt.php?searchtext=<!--WTD_FULLTXT(SEARCHTEXT)-->'> Vyhledat "<!--WTD_FULLTXT(SEARCHTEXT)--> " v poradnách.</a>")-->
| Klíčová slova použitelná ve stylu nalezených výsledků | ||
| Klíčové slovo | Význam | Poznámka |
| <!--WTD_F(NUMBER)--> | Číslování řádků | |
| <!--WTD_F(ID)--> | ID položky | ID zprávy či jiného objektu podle datového zdroje |
| <!--WTD_F(TITLE)--> | Nadpis | |
| <!--WTD_F(TITLELINK)--> | Odkaz nadpisu | |
| <!--WTD_F(DATE)--> | Datum | |
| <!--WTD_F(LANGUAGEID)--> | ID jazyka | |
| <!--WTD_F(LANGUAGE)--> | Název jazyka | |
Na všechna tato klíčová slova existují alternativa typu WTD_IF(…NULL) a WTD_IF(…NOTNULL) stejně jako u stylů pro zprávy (viz také kapitola 4.5).
| Klíčová slova použitelná ve stylu nalezených výsledků – informace o zdroji nalezených dat | ||
| Klíčové slovo | Význam | Poznámka |
| <!--WTD_IF(ORIGINNEWS,"")--> | Nalezena zpráva | Kód se vkládá v případě, že daná nalezená položka pochází z databáze zpráv |
| <!--WTD_IF(ORIGINDISC,"")--> | Nalezen diskusní příspěvek | Kód se vkládá v případě, že daná nalezená položka pochází z databáze diskuzních příspěvků (modul Diskuze) |
| <!--WTD_IF(ORIGINADVICE,"")--> | Nalezen dotaz v poradně | Kód se vkládá v případě, že daná nalezená položka pochází z databáze dotazů v poradnách (modul Poradny a rozhovory) |
| <!--WTD_IF(ORIGINDIARY,"")--> | Nalezena akce | Kód se vkládá v případě, že daná nalezená položka pochází z databáze kalendáře akcí (modul Kalendář akcí) |
Podmíněné vkládání polí
U některých z výše uvedených polí lze využít podmíněného vkládání do výsledného HTML kódu. K tomu se používají klíčová slova
<!--WTD_IF(jméno_poleNULL,"html kód")-->
<!--WTD_IF(jméno_poleNOTNULL,"html kód")-->
kde za se za jméno_pole dosadí název zvoleného pole.
- Pokud je toto pole prázdné
- zobrazí se na místě podmínky jméno_poleNULL HTML kód, který je obsažen v uvozovkách
- podmínka jméno_poleNOTNULL se nahradí prázdným řetězcem.
- Naopak pokud pole není prázdné
- zobrazí se na místě podmínky jméno_poleNOTNULL HTML kód, který je obsažen v uvozovkách
- podmínka jméno_poleNULL se nahradí prázdným řetězcem.
<!--WTD_IF(PICNULL, "obrázek není k dispozici")-->
<!--WTD_IF(PICNOTNULL, "<img src="<!-WTD_F(PIC)-->"/>")-->
Formulářová pole
Vyhledávání ve zprávách
Názvy elementů formuláře jsou následující:
- searchtext – vyhledávací textová podmínka
- categid – id kategorie
- subcateg – vyznačení, že se má hledat včetně podkategorií. Hodnota 1 znamená ano, jiná hodnota ne.
- langid – id jazyka
- publid – id publikace
- datefrom – datum od
- dateto – datum do
- sort - způsob třídění, možné hodnoty rank nebo date, pokud není specifikováno, třídí se podle času zpráv sestupně
Použití je zřejmé z následujícího příkladu. Jednoduše formátovaný vyhledávací formulář v HTML vypadá následovně:
<form action="/scripts/modules/fulltext/fulltxt.php" method="get">
<!--WTD_IF(WRONGDATEFROM,"<p>Chybně vložený formát v políčku s počátečním datem.</p>")-->
<!--WTD_IF(WRONGDATETO,"<p>Chybně vložený formát v políčku s koncovým datem.</p>")-->
<table>
<tr>
<td colspan="2">
Hledání ve zprávách
</td>
</tr>
<tr>
<td colspan="2">
<input type="text" name="searchtext" value="<!--WTD_FULLTXT(SEARCHTEXT)-->" size="43" maxlength="80" />
<input type="submit" name="Action" value="Hledat" />
</td>
</tr>
<tr>
<td>
Jazyk:
</td>
<td>
<select name="langid">
<option value ="0">--všechny--</option>
<!--WTD_FULLTXT(LANGUAGES)-->
</select>
</td>
</tr>
<tr>
<td>
Datum od:
</td>
<td>
<input type="text" name="datefrom" maxlength="10" value="<!--WTD_FULLTXT(DATEFROM)-->" />
</td>
</tr>
<tr>
<td>
Datum do:
</td>
<td>
<input type="text" name="dateto" maxlength="10" value="<!--WTD_FULLTXT(DATETO)-->" />
</td>
</tr>
</table>
</form>
Globální hledání
Názvy elementů formuláře jsou následující:
- searchtext – vyhledávací textová podmínka
- langid - jazyk
- datefrom – datum od
- dateto – datum do
Jejich použití je stejné jako u prohledávání zpráv.
Parametry z URL či formuláře
Následující parametry se používají ve veřejných skriptech - lhostejno zda z URL nebo formuláře.
Skript fulltxt.php
V URL skriptu fulltxt.php můžeme definovat tyto parametry:
- lid (integer) - ID jazyka v případě používání jiné jazykové mutace než výchozí. Toto nastavení souvisí s rozdělením na jednotlivé jazyky uvnitř admin. rozhraní modulu.
- locale (string) ... locale string jazyka (CS, EN, DE). Výsledek stejný jako výše.
- tmplid (integer) ... vynucení jiné předlohy vyhledávací stránky, než jaká je nastavena na stránce Výsledky hledání.
Další parametry přebírá skript fulltxt.php z elementů vyhledávacího formuláře:
- Musí v něm být přítomno textové pole s názvem searchtext (vyhledávaný text)
- Mohou v něm být přítomna textová pole datefrom, dateto (časové rozmezí vyhledávaných zpráv)
- Mohou v něm být přítomna pole categid (kategorie zpráv), subcateg (včetně podkategorií), langid (jazyk zpráv) a publid (publikace zpráv).
Skript globalsearch.php
V URL skriptu globalsearch.php můžeme definovat tyto parametry:
- lid (integer) - ID jazyka v případě používání jiné jazykové mutace než výchozí. Toto nastavení souvisí s rozdělením na jednotlivé jazyky uvnitř admin. rozhraní modulu.
- locale (string) ... locale string jazyka (cs, en, de). Výsledek stejný jako výše.
- tmplid (integer) ... vynucení jiné předlohy vyhledávací stránky, než jaká je nastavena na stránce Výsledky hledání.
Další parametry přebírá skript globalsearch.php z vyhledávacího formuláře:
- Musí v něm být přítomno textové pole s názvem searchtext (vyhledávaný text)
- Mohou v něm být přítomna textová pole datefrom, dateto (časové rozmezí vyhledávaných zpráv, diskuzí, poraden a rozhovorů a akcí modulu Kalendář akcí)
- Může být použito pole langid (jazyk zpráv).