„Chci najít všechny dokumenty, které se týkají tanga! Potřebuji je rychle! Mohu to udělat?“
Dobře, ale nejdřív se nadechni!
Vyhledávání klíčových slov v dokumentech aplikace 4D Write Pro jednoduše vyžaduje přidání nového indexovacího atributu v rámci každého dokumentu. Ve výchozím nastavení se to neprovádí, protože tento typ vyhledávání není často potřeba, takže by nemělo smysl systematicky zvětšovat velikost dokumentů. Když je to však potřeba, lze tento typ indexu vytvořit velmi snadno.
„Tango je tradiční argentinský tanec“. Naším cílem je vytvořit seznam slov z obsahu dokumentů. K tomu slouží především dva příkazy:
- WP Get text – vrátí nezpracovaný text dokumentu
- Get text keywords – naplní textové pole slovy z poskytnutého textu. Po naplnění tohoto pole jej stačí přidat jako atribut objektu dokumentu 4D Write Pro a použít jej jako cíl pro vyhledávání klíčových slov.
Podívejme se blíže na podrobnosti.
Nepřehlédněte nic veVnitř dokumentu
WP Get text vrací obsah cíle jako prostý text. Cílem může být zadaný rozsah nebo celý dokument. Pokud jako argument předáte dokument, bude vrácen pouze text v těle dokumentu. Záhlaví a zápatí budou ignorovány, což pravděpodobně není žádoucí. Vzhledem k tomu, že každá část dokumentu může mít vlastní záhlaví a zápatí, budete muset každou z nich projít ve smyčce a přečíst jejich obsah. Nezapomeňte vzít v úvahu všechny varianty (např. první strana, pravá strana, levá strana).
Vložení textu do pole ARRAY
Get text keywords Naplňte pole na základě obsahu zdrojového textu. Jedinou jemností je zde nezapomenout na nepovinný parametr hvězdička (*). Ten umožňuje naplnit pole pouze hodnotami, které jsou odlišné od slov v textu. Tím se vyhnete zbytečnému „zatěžování“ 🙂
Vytvoření indexu v dokumentu
Název atributu, který bude obsahovat index, je na vás, důrazně však doporučujeme předřadit mu podtržítko, abyste se vyhnuli případným konfliktům s existujícími (nebo budoucími) veřejnými atributy dokumentů 4D Write Pro (příklad: „_keywords“.).
Toto indexování je samozřejmě nutné provést při každé změně dokumentů, ale jedná se o opravdu velmi rychlý úkol, který nezpůsobí žádné znatelné zpomalení práce uživatelů.
Indexujte index!
Aby byly dotazy využívající index klíčových slov rychlé a efektivní, musí být samozřejmě indexován i samotný dokument. S velikostí indexu si nemusíte dělat starosti. Indexují se pouze vystavené (veřejné) atributy, takže lze očekávat jen velmi mírné předimenzování. Není například nutné vytvářet nové pole objektu, které by sloužilo pouze k tomuto účelu. To by bylo zcela zbytečné a zabrané místo by bylo větší než při použití existujícího objektu (tj. samotného dokumentu 4D Write Pro).
V případě objektových polí „Automaticky“ se jedná o „shlukový b-strom“, který je ideální pro obchodní dopisy nebo podobné dokumenty.
Provádění dotazů na tento index
Klasické dotazy je třeba provádět „podle atributů“. Mějte na paměti, že atribut je kolekce, takže musíte přidat otevírací a uzavírací závorky [ ], abyste 4D naznačili, že vyhledávání musí být provedeno v rámci této kolekce. Například:
QUERY BY ATTRIBUTE([SAMPLE]; [SAMPLE]WP; "_keywords[]"; =; $val)
Dotazy ORDA se provádějí podle stejného principu:
$entitySel:=ds.SAMPLE.query("WP._keywords[] = :1"; $val)
Závěr
Pokud se ve vašich dokumentech s tímto typem indexace od počátku nepočítalo a vznikne potřeba, nikdy není pozdě! Apply to selection metody indexace splní svou úlohu dokonale. Vyhledávání lze také kombinovat a brát v úvahu několik slov najednou (všechna slova) nebo samostatně (alespoň jedno ze slov). To vám (a zejména uživatelům vašich databází) umožní velmi rychle vyhledávat texty podle slov, která obsahují.
Nyní máte k dispozici dva způsoby vytvoření (a možná i odstranění) fulltextového indexu! Lze je používat počínaje verzí 4D V17. Podívejte se na tento úryvek kódu, který můžete použít ve své vlastní aplikaci!