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

Z WebToDate
Skočit na navigaciSkočit na vyhledávání
m Nahrazení textu „[[Category:WebToDate 4.1“ textem „[[Category:WebToDate“
mBez shrnutí editace
 
Řádek 9: Řádek 9:
=== Popis a závislosti ===
=== Popis a závislosti ===


WebToDate může pracovat ve dvou režimech:
WebToDate ukládá indexované informace do databáze. K indexaci a vyhledávání se využívá fulltextový stroj dané databáze, čímž jsou dány možnosti vyhledávání z hlediska rozpoznávání slov, minimální a maximální délky indexovaných slov, slov, které nejsou indexovány apod. Tyto možnosti se liší pro databázi [[#Vyhledávání v databázi MySQL|MySQL]] a [[#Vyhledávání v databázi MS SQL|MSSQL]].
 
* '''Ukládání zpráv do databáze''' – v tomto případě se všechna pole zpráv ukládají do databáze MS SQL serveru nebo MySQL serveru
* '''Ukládání zpráv do souborů''' – v tomto případě se obsah polí POPIS a TELO ukládá do souborů v adresáři ''texts''. Adresář pak obsahuje pro každou zprávu jeden HTML soubor, který kromě výše uvedených polí obsahuje formou META tagů některé duplicitní informace vzhledem k databázi (název kategorie, datum apod.)
 
<div class="note">Pokud je zapnuto ukládání do databáze, je možné ve variantě s&nbsp;databází MySQL zprávy fulltextově prohledávat pouze tehdy, je-li použita databáze MySQL verze&nbsp;4 a vyšší.</div>
 
Fulltextový režim se volí pomocí konstanty FULLTEXT, která se nastavuje v&nbsp;konfiguračním souboru ''/config/global.php.''
 
Konstanta FULLTEXT může nabývat následujících hodnot
 
* '''true''', pokud se mají informace o zprávách ukládat do souborů
* '''false''', pokud se informace o zprávách mají ukládat do databáze
 
Nastavení je třeba provést před vložením první zprávy do databáze a již ho neměnit, jinak dojde k&nbsp;tomu, že část zpráv bude uložena v&nbsp;databázi, část v&nbsp;souborech a nebudou se správně zobrazovat ani prohledávat.
 
<div class="note">Doporučovaný režim je s&nbsp;hodnotou '''false''', všechny možnosti tohoto modulu lze využít pouze v&nbsp;této konfiguraci.</div>


=== Soubory ===
=== Soubory ===
Řádek 34: Řádek 18:
* application/modules/fulltext/
* application/modules/fulltext/
* rdata/resources/modules/fulltext
* rdata/resources/modules/fulltext
* swish/ (v případě použití programu Swish++ – viz výše)


== Vyhledávání v&nbsp;databázi MySQL ==
== Vyhledávání v&nbsp;databázi MySQL ==
Pokud je nastaven režim Ukládání zpráv do databáze (pomocí konstanty FULLTEXT, která se nastavuje v&nbsp;konfiguračním souboru ''/config/global.php'') a je použita databáze MySQL verze 4 a vyšší, mohou být pro fulltextové vyhledávání použity fulltextové indexy MySQL.
Pokud je využívána databáze MySQL verze 4 a vyšší, jsou pro fulltextové vyhledávání použity fulltextové indexy MySQL.


=== Nastavení fulltextového vyhledávání ===
=== Nastavení fulltextového vyhledávání ===


Před instalací modulu Fulltext:
Před instalací modulu Fulltext je doporučeno následující:


* Nastavte konstantu ''ft_min_word_len'' databázového serveru MySQL na&nbsp;hodnotu 3.
* Nastavte konstantu ''ft_min_word_len'' databázového serveru MySQL na&nbsp;hodnotu 3 (vyznačuje minimální délku indexovaných slov).
* Ujistěte se, že konstanta ''character_set'' je nastavena v&nbsp;souladu s&nbsp;instalačním manuálem.
* Ujistěte se, že konstanta ''character_set'' je nastavena v&nbsp;souladu s&nbsp;instalačním manuálem.
<div class="note">Ve WebToDate 3.7 byla podporován pouze DB server MySQL 3 a fulltextová indexace pro MySQL tudíž tehdy ještě neexistovala. Jestliže nicméně upgradujete z&nbsp;verze 3.7 na verzi vyšší, fulltextová indexace příslušných tabulek se automaticky doplní.</div>


Reindexace fulltextového katalogu databáze probíhá automaticky&nbsp;při změně obsahu indexovaných tabulek, není tedy třeba nastavovat žádnou naplánovanou úlohu.
Reindexace fulltextového katalogu databáze probíhá automaticky&nbsp;při změně obsahu indexovaných tabulek, není tedy třeba nastavovat žádnou naplánovanou úlohu.


== Vyhledávání v&nbsp;souborech – program Swish++ ==
   
Pokud je nastaven režim Ukládání zpráv do souborů, fulltextový modul využívá k&nbsp;indexaci a prohledávání článků služeb programu Swish++ v4.8 ( dále jen Swish ), který je třeba zkompilovat a nainstalovat.
 
=== Instalace fulltextového vyhledávače Swish++ ===
 
Nedoporučuje se používat jinou verzi, neboť tato verze obsahuje úpravy pro použití s&nbsp;WebToDate, jako je řazení příspěvků podle času. Navíc u nových verzí Swish došlo ke změně formátu výstupu, na který není WebToDate připraven.
 
=== Kompilace zdrojových souborů programu Swish ===
 
Zdrojové soubory programu Swish jsou distribuovány spolu s&nbsp;WebToDate a nacházejí se v&nbsp;adresáři
 
''swish/src''
 
Setkáte-li se při kompilování s&nbsp;problémy, lze je obvykle vyřešit úpravou konfiguračního souboru
 
''config/config.mk''
 
Některé problémy lze vyřešit následujícími způsoby:
 
* Nastavením nižší úrovně optimalizace
* Statickým zkompilováním programu
 
'''Po úspěšném zkompilování získáme programy index a search, které nakopírujeme do adresáře swish/bin'''
 
=== Instalace programu Swish ===
 
K ovládání programu Swish lze použít skript swish/swish_wtd.sh, který nabízí následující možnosti:
 
* start – spustí Swish
* stop – ukončí Swish
* restart – restartuje Swish
* index – přeindexuje články a restartuje Swish
 
Před použitím skriptu swish_wtd.sh je třeba v&nbsp;tomto skriptu nastavit následující proměnné
 
* ''$webtodate'' – obsahuje cestu adresáře s&nbsp;instalací WebToDate
* ''$index'' – cesta k&nbsp;souboru s&nbsp;programem index
* ''$search'' – cesta k&nbsp;souboru s&nbsp;programem search
 
Lze změnit i obsah proměnných $SocketFile a $PidFile, ale změna proměnné $SocketFile se musí následně promítnout v&nbsp;konstantě SWISH_SCOKET, která se nastavuje v&nbsp;souboru config/global.php, a která se používá při připojování php skriptu k&nbsp;daemonu programu Swish.
 
Nakonec je třeba úpravou souboru crontab nastavit daemon Cron tak, aby v&nbsp;pravidelných intervalech (např. 1x za 30 minut) spouštěl skript swish/swish_wtd.sh s&nbsp;parametrem index, a docházelo tak k&nbsp;aktualizaci indexačního souboru.


== Vyhledávání v databázi MS SQL ==
== Vyhledávání v databázi MS SQL ==
=== Popis a závislosti ===
=== Popis a závislosti ===


Pro fulltextové indexování a hledání lze použít také fulltextový stroj MS SQL Serveru verze 7.0 SP3 a vyšší nebo 2000 SP3 a vyšší nebo 2005.
Pro fulltextové indexování a hledání lze použít také fulltextový stroj MS SQL Serveru verze 2000 SP4 a vyšší (MS SQL 2005 a 2008).


=== Využití stroje SQL serveru ===
=== Využití stroje SQL serveru ===
Řádek 110: Řádek 50:
# Vytvoření fulltextového katalogu 'webtodatekatalog'
# Vytvoření fulltextového katalogu 'webtodatekatalog'
# Vytvoření fulltextového indexu nad vybranými sloupci tabulky zpráv (NEWSDB)
# Vytvoření fulltextového indexu nad vybranými sloupci tabulky zpráv (NEWSDB)
# Jsou-li již nainstalovány moduly Diskuze, Poradny a rozhovory nebo Kalendář akcí, pak také vytvoření fulltextového indexu nad&nbsp;vybranými sloupci tabulek těchto modulů. Tyto moduly jsou však zpravidla instalovány později než modul Fulltext, v&nbsp;tom případě se tyto fulltextové indexy vytvářejí až v&nbsp;rámci těchto modulů. U bodů b a c se při instlaci na MS SQL verze 2000 automaticky nastavuje pro všechny indexované sloupce atribut 'default full-text language' na&nbsp;hodnotu ‘Neutral’
# Jsou-li již nainstalovány moduly Diskuze, Poradny a rozhovory nebo Kalendář akcí, pak také vytvoření fulltextového indexu nad&nbsp;vybranými sloupci tabulek těchto modulů. Tyto moduly jsou však zpravidla instalovány později než modul Fulltext, v&nbsp;tom případě se tyto fulltextové indexy vytvářejí až v&nbsp;rámci těchto modulů. U bodů b a c se při instlaci automaticky nastavuje pro všechny indexované sloupce atribut 'default full-text language' na&nbsp;hodnotu ‘Neutral’
# Vytvoření  naplánované úlohy s&nbsp;názvem ‘jméno_databáze  Fulltext Indexing’, která v půlhodinových intervalech provádí plnou reindexaci (full population) katalogu vytvořeného v&nbsp;bodě b)
# Vytvoření  naplánované úlohy s&nbsp;názvem ‘jméno_databáze  Fulltext Indexing’, která v půlhodinových intervalech provádí plnou reindexaci (full population) katalogu vytvořeného v&nbsp;bodě b)






<div class="note">U serveru MS SQL verze 2000 lze alternativně využít také automatického přeindexování po změně obsahu tabulky NEWSDB. Chcete-li tuto funkcionalitu využít, smažte automaticky vytvořenou naplánovanou úlohu ‘jméno_databáze  Fulltext Indexing’ (je dostupná z konzole SQL Enterprise Manager v sekci ''Management/SQL Server Agent/Jobs)'' a nastavte automatickou reindexaci pomocí následujícího SQL skriptu: ''sp_fulltext_table 'NEWSDB', 'start_change_tracking' ''sp_fulltext_table 'NEWSDB', 'start_background_updateindex''''</div>
<div class="note">Lze také alternativně využít také automatického přeindexování po změně obsahu tabulky NEWSDB. Chcete-li tuto funkcionalitu využít, smažte automaticky vytvořenou naplánovanou úlohu ‘jméno_databáze  Fulltext Indexing’ (je dostupná z konzole SQL Enterprise Manager v sekci ''Management/SQL Server Agent/Jobs)'' a nastavte automatickou reindexaci pomocí následujícího SQL skriptu: ''sp_fulltext_table 'NEWSDB', 'start_change_tracking' ''sp_fulltext_table 'NEWSDB', 'start_background_updateindex''''</div>

Aktuální verze z 19. 10. 2009, 11:35

Základní informace

Nasazení fulltextového hledání se skládá ze dvou samostatných činností:

  • Instalace fulltextového stroje, který zajišťuje správnou fulltextovou indexaci.
  • Vytvoření šablony a stylu pro vyhledávání, konfigurace vyhledávání.

Popis a závislosti

WebToDate ukládá indexované informace do databáze. K indexaci a vyhledávání se využívá fulltextový stroj dané databáze, čímž jsou dány možnosti vyhledávání z hlediska rozpoznávání slov, minimální a maximální délky indexovaných slov, slov, které nejsou indexovány apod. Tyto možnosti se liší pro databázi MySQL a MSSQL.

Soubory

Soubory modulu se nacházejí v adresářích

  • scripts/modules/fulltext/
  • application/modules/fulltext/
  • rdata/resources/modules/fulltext

Vyhledávání v databázi MySQL

Pokud je využívána databáze MySQL verze 4 a vyšší, jsou pro fulltextové vyhledávání použity fulltextové indexy MySQL.

Nastavení fulltextového vyhledávání

Před instalací modulu Fulltext je doporučeno následující:

  • Nastavte konstantu ft_min_word_len databázového serveru MySQL na hodnotu 3 (vyznačuje minimální délku indexovaných slov).
  • Ujistěte se, že konstanta character_set je nastavena v souladu s instalačním manuálem.

Reindexace fulltextového katalogu databáze probíhá automaticky při změně obsahu indexovaných tabulek, není tedy třeba nastavovat žádnou naplánovanou úlohu.


Vyhledávání v databázi MS SQL

Popis a závislosti

Pro fulltextové indexování a hledání lze použít také fulltextový stroj MS SQL Serveru verze 2000 SP4 a vyšší (MS SQL 2005 a 2008).

Využití stroje SQL serveru

Před instalací modulu Fulltext se ujistěte, že:

  • je aktivována možnost fulltextové indexace. To zjistíte příkazem select DATABASEPROPERTY('jméno_databáze', 'IsFulltextEnabled'). Fulltextovou indexaci případně povolíte příkazem sp_fulltext_database ‘enable’.
  • běží služba služba SQL Server Agent

Instalace databáze probíhá standardně jako u všech přibalovaných modulů, viz instalační manuál. Tato instalace zahrnuje:

  1. Zaregistrování modulu do systému WebToDate (tabulka MODULES)
  2. Vytvoření fulltextového katalogu 'webtodatekatalog'
  3. Vytvoření fulltextového indexu nad vybranými sloupci tabulky zpráv (NEWSDB)
  4. Jsou-li již nainstalovány moduly Diskuze, Poradny a rozhovory nebo Kalendář akcí, pak také vytvoření fulltextového indexu nad vybranými sloupci tabulek těchto modulů. Tyto moduly jsou však zpravidla instalovány později než modul Fulltext, v tom případě se tyto fulltextové indexy vytvářejí až v rámci těchto modulů. U bodů b a c se při instlaci automaticky nastavuje pro všechny indexované sloupce atribut 'default full-text language' na hodnotu ‘Neutral’
  5. Vytvoření naplánované úlohy s názvem ‘jméno_databáze Fulltext Indexing’, která v půlhodinových intervalech provádí plnou reindexaci (full population) katalogu vytvořeného v bodě b)


Lze také alternativně využít také automatického přeindexování po změně obsahu tabulky NEWSDB. Chcete-li tuto funkcionalitu využít, smažte automaticky vytvořenou naplánovanou úlohu ‘jméno_databáze Fulltext Indexing’ (je dostupná z konzole SQL Enterprise Manager v sekci Management/SQL Server Agent/Jobs) a nastavte automatickou reindexaci pomocí následujícího SQL skriptu: sp_fulltext_table 'NEWSDB', 'start_change_tracking' sp_fulltext_table 'NEWSDB', 'start_background_updateindex'