Az Összetett lekérdezés paranccsal segítségével grafikusan megjelenített komplex lekérdezéseket hozhat létre. Az összetett lekérdezésben különböző típusú lekérdezéseket kombinálhat különböző módokon.
Ilyen összetett lekérdezést használhatunk például arra, hogy egy adott XML elemen belül előforduló frázist keressünk, vagy arra, hogy egy olyan szót keressünk, amelyet ugyanabban a mondatban egy meghatározott szófajú szó követ.
Az Összetett lekérdezés párbeszédpanel a lekérdezést csomópontok hálózataként jeleníti meg. Mindegyik csomópont egy specifikus keresési szempontot reprezentál.
Az Összetett lekérdezés párbeszédpanel megjelenítéséhez válassza ki az Összetett lekérdezés parancsot a Fájl menü Új lekérdezés almenüjéből, vagy az eszköztárból. A parancs kiválasztásakor az alábbi párbeszédpanel jelenik meg:
Azt látjuk, hogy kezdeti állapotában a párbeszédpanel két üres csomópontot tartalmaz. Minden Összetett lekérdezés legalább két csomópontbóll áll. Az egyik - a hatóköri csomópont - azt a kontextust definiálja, amelyben a keresés zajlik. A másik csomópont - a tartalmas csomópont - jeleníti meg a keresési kifejezést. Tartalmas csomópontból az Összetett lekérdezésben több is szerepelhet, amelyeket különféle módokon kombinálhatunk egymással.
A fenti példában a baloldalon található, nyíllal megjelölt csomópont a hatóköri csomópont. A tartalmas csomópont a jobboldalon látható. Mindkét csomópont üres. Ilyenkor a tartalmas csomópont körvonala piros, mivel az Összetett lekérdezésben nem szerepelhetnek üres tartalmas csomópontok.
A párbeszédpanel alján további arra vonatkozó emlélekeztető jelenik meg, hogy az üres tartalmas csomópontok nem megengedettek. Emiatt nem használható az OK gomb sem. Ha a tartalmas csomópontot kitöltjük (lásd alább), a piros körvonal feketévé válik és a párbeszédpanel alján "A lekérdezés jól formált" felirat jelenik meg.
Ez egy legkisebb jól formált Összetett lekérdezés (ebben az esetben azonos egy frázislekérdezéssel). A lekérdezés futtatásához nyomja meg az OK gombot. Ha a lekérdezés végrehajtása nélkül be kívánja zárni a párbeszédpanelt, nyomja meg a MÉGSE gombot.
Az alábbiakban részletesen át fogjuk tekinteni, hogyan kell kitölteni a tartalmas és a hatóköri csomópontokat, hogyan vegyünk fel több csomópontot valamint azt, hogy hogyan adjuk meg az egyes csomópontok közötti viszonyt.
Hogyan tölthetjük ki a tartalmas csomópontokat?
A tartalmas csomópontokban azt adjuk meg, hogy mire vonatkozik a keresés. Minden tartalmas csomópont egy egyedi lekérdezést tartalmaz, amely az eddig tárgyalt lekérdezéstípusok közül kerül ki.
Egy tartalmas csomópont bármilyen típusú lekérdezést tartalmazhat (ha az nem Összetett vagy XQL-lekérdezés). Azaz tartalmazhat szólekérdezést; frázislekérdezést; hozzáadott-kulcs lekérdezést; mintalekérdezést; XML-lekéredezést vagy az összes szót helyettesíteni képes aláhúzás karaktert ("_").
A tartalmas csomópontban szerepelhet Gyors lekérdezés is. Ha Gyors lekérdezést kíván hozzáadni, kattintson jobb-egérrel a csomópontra, majd írja be a megfelelő kifejezést:
Miután megadta a keresési kifejezést, kattintson bal-egérrel a szövegdoboz mellé. Ekkor a csomópontban az Ön által beírt kifejezés XQL reprezentációja fog megjelenni (ne felejtse el, hogy a Gyors lekérdezés nem más, mint egy frázislekérdezés).
Ha egyéb lekérdezést kíván beírni, kattintson bal-egérrel a csomópont fölé. Ezáltal egy helyzetérzékeny jelenít meg. Válassza ki ebből a Szerkesztés almenüt:
Miután a megfelelő lekérdezést kiválasztotta az almenüből, megjelenik a lekérdezéshez tartozó párbeszédpanel. Így tehát a lekérdezésre vonatkozó beállításokat pontosan úgy kell megadnia, mint különben (kattintson ide a kapcsolódó súgóoldalak listájáért). Az egyetlen különbség, hogy az OK gomb megnyomásával nem indítja el a lekérdezés futtatását, hanem visszatér az Összetett lekérdezés párbeszédpanelhez, ahol a szerkesztett csomópontban a lekérdezés XQL reprezentációja fog megjelenni. A szóban forgó tartalmas csomópont most már ki van töltve.
A "Bármi" parancs a fentiektől enyhén eltérő módon működik: a parancs a csomópontot egy olyan frázislekérdezéssel tölti ki, amelyben csak a "_" karakter szerepel (amivel akármilyen szót helyettesíthet). Megjegyzés: a Bármi csomópont csak olyan lekérdezésben használható, amely több tartalmas csomóponttal is rendelkezik (további részleteket erről később találhat).
A kitöltött csomópontok tartalmát szerkesztheti, törölheti, de törölheti magát a csomópontot is. Ezeket a parancsokat úgy érheti el, hogy bal-egérrel az adott csomópontra kattint:
A Szerkesztés parancs ismét megnyitja azt a párbeszédpanelt, amelyben az adott csomópontban található lekérdezést létrehozta. A párbeszédpanelben végezze el a kívánt módosításokat, majd nyomja meg az OK gombot. Így visszatér az Összetett lekérdezés párbeszédpanelhez, ahol már a megváltozott tartalmú csomópont lesz látható.
A Törlés parancs alkalmazásával eltávolíthatja a csomópontot, de a lekérdezés többi része változatlan marad. Amint az a fenti ábrán is látszik, ha az Összetett lekérdezés csak egyetlen-egy tartalmas csomópontból áll, a Törlés parancs nem végrehajtható.
A Tartalom törlése paranccsal a csomópontban található lekérdezést távolíthatja el. A parancs alkalmazásával minden tartalmas csomópont üressé tehető.
A Másolás paranccsal a lekérdezés XQL reprezentációját illesztheti be máshová, míg a Beillesztés paranccsal az adott csomópont XQL szövegét írhatja át. Fontos megjegyezni, hogy az itt található Másolás és Beillesztés parancsok nem a vágólapot használják, így ezen parancsok nem alkalmasak arra, hogy az Összetett lekérdezés párbeszédpanelből szövegeket másoljunk át egyéb helyekre. Ezek a parancsok akkor hasznosak, ha egyszerre több tartalmas csomóponttal dolgozunk.
Hogyan töltsük ki a hatóköri csomópontot?
A hatóköri csomóponttal azt adhatja meg, hogy a Xaira milyen környezetben keresse a megadott lekérdezéseket. Az így meghatározott környezet a lekérdezés hatóköre. Minden Összetett lekérdezés párbeszédpanelben csak egy hatóköri csomópont található.
A lekérdezés hatókörének megadásához kattintson bal-egérrel a hatóköri csomópontra:
A megjelenő helyzetérzékeny menüben két parancsot talál. Ha az XML parancsot választja, megnyitja az XML párbeszédpanelt. Ez ugyanúgy működik, mint a már említett XML-lekérdezés párbeszédpanel, lehetővé téve Önnek akár attribútum-érték párokkal is módosított XML elemek kiválasztását. Az OK gomb megnyomásával visszatér az Összetett lekérdezés párbeszédpanelhez. A hatóköri csomópont a kiválasztott XML elem XQL reprezentációját fogja tartalmazni.
Ha a lekérdezés hatóköreként megadunk egy XML elemet, a lekérdezést csak olyan szavakra vagy szókombinációkra korlátozzuk, amelyek a szóban forgó XML elemen belül fordulnak elő. Így például az alábbi lekérdezés a fórumok szövegeiben keresi az "asszem" kifejezést:
Nyilván akkor van értelme feltételül szabni, hogy az Összetett lekérdezésben található minden egyes lekérdezés ugyanabban az XML elemben forduljon elő, ha az Összetett lekérdezés egynél több tartalmas csomópontból áll. Az alábbi ábrán egy olyan lekérdezés található, amelynek a találathalmaza az "ember" és a "polgár" azon előfordulásait fogja tartalmazni, amelyek ugyanabban az <s> (mondat) elemben találhatóak:
A másik lehetőség a hatókört tartományként definiálni. Ez azt jelenti, hogy minden egyes lekérdezésnek az Ön által megadott számú szóból álló tartományon belül kell illeszkednie. Ha a menüből a Tartomány parancsot választja, az alábbi párbeszédpanel jelenik meg:
Írjon be egy egész számot a Tartomány szövegdobozba, majd nyomja meg az OK gombot. Ezáltal visszatér az Összetett lekérdezés párbeszédpanelhez, ahol az Ön által megadott tartomány XQL reprezentációja fog megjelenni. Így például az alábbi összetett lekérdezés olyan találati halmazt eredményez, ahol az "ember" és a "polgár" egymástól számítva öt szón belül fordulnak elő.
Nyilvánvaló okok miatt csak akkor van értelme a hatókört tartományként értelmezni, ha az összetett lekérdezés egynél több tartalmas csomópontból áll. Így tehát, ha az Ön lekérdezésében csak egy tartalmas csomópont szerepel, a hatóköri csomópont körvonala pirossá válik és a párbeszédpanelen az alábbi figyelmeztetés jelenik meg:
A fenti lekérdezés kétféleképpen tehető jól formálttá. Az egyik megoldás: felvenni még legalább egy tartalmas csomópontot. (Az alábbiakban találhat arra vonatkozó részleteket, hogy hogyan használhat egyszerre több tartalmas csomópontot.) A másik megoldás pedig a hatókör típusának megváltoztatása: a Tartomány parancs helyett válassza az XML parancsot!
Hogyan kezeljünk egyszerre több tartalmas csomópontot?
Az egy darab kötelező tartalmas csomóponthoz további, opcionális csomópontokat vehet fel, amelyekben újabb keresési szempontokat is megfogalmazhat. Az összes tartalmas csomópont kitöltése azonos módon történik (lásd fent).
Ha egy új csomópontot kíván létrehozni, kattintson bal-egérrel a T-alakú kiágazásokra - amelyek a csomópontok élei lesznek: új csomópontokat egy már meglévő csomópont fölé, alá valamint annak a jobb oldalára szúrhat be:
Két már meglévő csomópont közé is felvehet egy új csomópontot, ha bal-egérrel a két csomópontot összekötő élre kattint. Ha az él vízszintes ez a művelet az új csomópont beszúrását eredményezi:
Ha az él függőleges, a csomópont hozzáadása egy kicsit bonyolultabb: a kattintásra megjelenő helyzetérzékeny menüből válassza a Csomópont beszúrása parancsot:
Az alábbiakban vizsgáljuk meg, hogy a tartalmas csomópontok milyen viszonyban lehetnek egymással!
A vízszintesen összekötött csomópontok logikai vagy kapcsolatban állnak egymással. Így az alábbi lekérdezés vagy az "önkormányzati" szóra vagy a "mandátumukhoz" szóra illeszkedik (az "önkormányzati mandátumukhoz" szókapcsolat is a találatok között fog szerepelni).
Így tehát a fenti lekérdezés az "önkormányzati" és a "mandátumukhoz" szavak összes korpuszbeli előfordulásait megtalálja (amennyiben ezek egy <s> elemen belül fordulnak elő).
(Fontos megjegyezni, hogy egy tartalmas csomópont is tartalmazhat több különböző kifejezésre is illeszkedő lekérdezéseket. Ez az eset állhat fenn például, ha egy tartalmas csomópont mintalekérdezést tartalmaz)
A függőlegesen összekötött csomópontok olyan lekérdezéseket reprezetálnak, amelyeknek a megadott hatókörön belül egyszerre kell illeszkedniük (kivéve abban az esetben, ha a kapcsolat típusa "Nem rákövetkezés" - lásd alább). Minden megoldás tartalmazni fogja az "önkormányzati" és a "mandátumukhoz" kifejezéseket is:
Természetesen nem ütközik akadályba a függőlegesen összekötött csomópontok kombinálása vízszintesen összekötött csomópontokkal sem. Így például az alábbi lekérdezés eredményhalmaza olyan kifejezésekből fog állni, amelyekben egy mondaton belül előfordul az "az" vagy az "a" és az "első" vagy a "második".
Az Összetett lekérdezés párbeszédpanelben akár függőlegesen, akár vízszintesen, bármennyi tartalmas csomópont hozzáadható. Fontos azonban szem előtt tartani, hogy minden tartalmas csomópont csak kitöltött formában szerepelhet.
Nem nehéz az összetett lekérdezésben annyi csomópontot felvenni, hogy azok már ne legyenek egyszerre megjeleníthetők a párbeszédpanelben. Ebben az esetben - a Windowsban szokásos módon - használja az egeret a párbeszédpanel méretének megváltoztatására, vagy a görgetősávokat a teljes hálózat megtekintésére:
Hogyan kössük össze a tartalmas csomópontokat?
Egy új csomópont létrehozásakor az alapértelmezett kapcsolat közöttük a Megelőzés lesz:
A kapcsolat megváltoztatásához kattintson bal-egérrel a megfelelő élre és a megjelenő menü Kapcsolattípus almenüjéből válassza ki a kívánt parancsot:
A vízszintes élek ugyanolyan típusú kapcsolatokat jelentenek: ahogy már fentebb láttuk, minden ilyen viszony a logikai "vagy"-nak felel meg.