WebToDate/Fulltext/Reference: Porovnání verzí

Z WebToDate
Skočit na navigaciSkočit na vyhledávání
m Nahrazení textu „[[Category:WebToDate 4.1“ textem „[[Category:WebToDate“
Řádek 43: Řádek 43:


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.
<div class="note">Globální hledání je podporováno pouze pro fulltextové databázové stroje MySQL a MS SQL Server, v jiných konfiguracích jej nelze použít.</div>


== Jaké výrazy lze při hledání používat ==
== Jaké výrazy lze při hledání používat ==

Verze z 19. 10. 2009, 11:44

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).