Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A lekérdezés eredményei tartalmazzák a lekérdezés által visszaadott sorokat és az egyes sorok rangértékét is, ha a rangoszlop szerepel a SELECT záradékban. A rangsorértékeket a keresőmotor számítja ki, és a nullától az 1000-ig terjedő tartományban egész számként adja vissza. A rangsoreredmények értelmezhetőbbé tételéhez a lekérdezés szabályozhatja a nyers rangértékek kiszámítását a RANK BY záradékban.
Ez a témakör a következőképpen van rendszerezve:
RANK BY záradék
A RANK BY záradék szintaxisa a következő:
WHERE ( <search_condition> )
RANK BY [ ( ] <rank_specification> [ ) ]
A RANK BY záradékot a közvetlenül megelőző search_condition alkalmazza a rendszer, így a keresési feltétel által visszaadott sorok alacsonyabb vagy magasabb rangot adnak meg, mint a másik keresési feltétel által visszaadott sorok. A search_condition körüli zárójelekre van szükség. A rangspecifikációt körülvevő zárójelek nem kötelezőek.
Egynél több RANK BY záradék alkalmazható egyetlen feltételre. Zárójelek használatával egymás után további RANK BY záradékokat is felvehet.
Jegyzet
A teljes szöveges predikátumok 0 és 1000 közötti rangértékeket ad vissza. A nem teljes szöveges predikátumnak megfelelő összes dokumentum rangsorolási értéke 1000. A rangértékek módosításakor figyelembe kell venni ezeket az információkat.
A RANKBY záradék rank_specification része egy vagy több függvényt azonosít a rangértékekre. A SÚLY függvény szorzót alkalmaz egy visszaadott sor nyers rangértékére. Minél kisebb a szorzó, annál alacsonyabb az eredményül kapott rangérték. A COERCION függvény egy visszaadott sor adott rangértékének szorzására, hozzáadására vagy beállítására használható. Minden rangsor-specifikáció tartalmazhat nullát vagy egy SÚLY függvényt, valamint nulla vagy több COERCION függvényt. Ha a WEIGHT és a COERCION függvény is szerepel a RANK BY záradékban, a SÚLY függvénynek kell elsőnek lennie.
SÚLY függvény
A SÚLY függvény szintaxisa a következő:
WEIGHT ( <weight_multipler> )
A szorzónak 0,001 és 1,000 közötti decimálisnak kell lennie. A keresési feltétel predikátuma által visszaadott nyers rangértéket megszorozza a súlyszorzó, hogy új rangértéket állítson be.
Az alábbi példában a SÚLY függvény a System.Document.LastAuthor mezőben a "Theresa" szóval rendelkező dokumentumokat a System.Author mezőben a "Theresa" értékkel feleannyira adja meg:
WHERE CONTAINS ( System.Author,'"Theresa"' )
RANK BY WEIGHT ( 1.000 )
OR
CONTAINS ( System.Document.LastAuthor,'"Theresa"' )
RANK BY WEIGHT ( 0.500 )
Jegyzet
A CONTAINS és a FREETEXT predikátum oszlop súlyozási funkciói támogatják a rövidített formátumot a keresőkifejezés és a szorzó ("szoftver":0,25") kettőspont használatával. A RANK BY záradék nem támogatja a rövidített űrlapot.
A RANK BY WEIGHT használata korlátozott: nem működik logikai feltételeket használó CONTAINS záradékokkal; például a következő példa nem engedélyezett:
CONTAINS ( System.Author,'"Theresa" OR "Teresa"' ) RANK BY WEIGHT ( 0.400 )
COERCION függvény
A rang-kényszerítő függvény használható a visszaadott rangérték módosítására összeadással vagy szorzással, vagy egy adott érték hozzárendelésével.
A COERCION függvény szintaxisa a következő:
COERCION ( <coercion_operation> , <coercion_value> )
A kényszerítő érték egész szám.
Az alábbi táblázat az elérhető kényszerítési műveleti beállításokat ismerteti.
| Kényszerítő művelet | Leírás | Értéktartomány |
|---|---|---|
| ABSZOLÚT | A visszaadott rangérték a kényszerítő értékben megadott érték. | 0–1000 |
| HOZZÁAD | A visszaadott rangérték a nyers rangérték és a megadott kényszerítő érték összege. | 0–1000 |
| SZOROZ | A visszaadott rangérték a nyers rangérték és a megadott kényszerítő érték szorzata. | 0–1000 |
| MINMAX | A visszaadott rangsorérték az egyező elem 0–1000 rangpontszámának lineáris leképezése a CONTAINS vagy CONTAINSSEMANTIC függvényből a megadott minimális és maximális kényszerítési értékek között. | 0–1000 |
Fontos
A keresés csak a 0 és 1000 közötti tartományban adhat vissza rangértéket.
Az alábbi példa a COERCION függvénnyel állítja be a címben szereplő "számítógép" összes dokumentumát 1000-nek, miközben negyedével csökkenti a címben a "számítógépet" és a "szoftvert" tartalmazó dokumentumok rangját.
WHERE CONTAINS ( System.Title, 'computer' )
RANK BY COERCION ( ABSOLUTE , 1000 )
OR
CONTAINS ( System.Title, '"computer" AND "software"' )
RANK BY COERCION ( MULTIPLY, 0.750 )
Az alábbi példa a COERCION függvénnyel a dokumentumok nyers rangját a "számítógép" kifejezéssel 500 és 800 közötti tartományra képezi le szemantikai egyezéseik alapján.
WHERE CONTAINSSEMANTIC('text', *, 'computer', 1033)
OR CONTAINSSEMANTIC('image', *, 'computer', 1033)
RANK BY COERCION(MINMAX, 500, 800)
ORDER BY System.Search.Rank DESC
Egyesítés(<merge_operation>)
A RANK BY záradékkal az összes eredmény rangsorainak összesítésére szolgál az egyesítési eredmények végleges rangsorolt listájának létrehozásához.
A MERGE függvény szintaxisa a következő:
RANK BY MERGE ( <merge_operation>)
Egyesítési műveletek
Az alábbi táblázat a merge_operation paraméter támogatott műveleteit ismerteti.
| Egyesítési művelet | Leírás |
|---|---|
| CONVEXCOMBINATION | Ez az egyesítési algoritmus kizárólag akkor használható, ha a lekérdezés a következő záradékokat tartalmazza: CONTAINS (lexikális keresés), CONTAINSSEMANTIC('Text',...) és CONTAINSSEMANTIC('Image'...) (szemantikai keresés szöveg és képek között). A három záradékból származó pontszámokat súlyozott összegzési megközelítéssel kombinálja, nagyobb prioritást biztosítva a lexikális pontszámoknak azáltal, hogy nagyobb súlyokat rendel hozzájuk a szemantikai pontszámokhoz képest. A végső rang 0 és 1000 között lesz. |
| MIN | Ez az egyesítési algoritmus az AND kurzor esetében az alapértelmezett viselkedés. Az összes eredmény közül kiválasztja a minimális rangot. |
| MAX | Ez az egyesítési algoritmus az alapértelmezett viselkedés OR kurzor esetén. Az összes eredmény közül kiválasztja a maximális rangot. |
Jegyzet
Ha a RANK BY MERGE(MIN) függvényt EGY VAGY kurzorral vagy a RANK BY MERGE(MAX) ÉS kurzorral használja, az nem fogja eredményezni a várt eredményt. Javasoljuk, hogy a MERGE függvényt csak a CONVEXCOMBINATION operátorral együtt használja a RANK BY záradékkal, amikor a lexikális és szemantikai keresési eredményeket egyetlen eredményhalmazba egyesít.
Example
Az alábbi példa bemutatja, hogy a MERGE függvény használatával lexikálisan és szemantikailag egyező elemeket kereshet a "számítógép" szóval a "Kép" vagy a "Szöveg" mezőkben. A keresési eredmények rangsorolása a RANK BY MERGE operátorral történik, amely összesíti az összes találat pontszámait a végső rangsorolt lista létrehozásához.
WHERE (CONTAINS(*,'computer', 1033)
OR CONTAINSSEMANTIC('Image', *, 'computer', 1033)
OR CONTAINSSEMANTIC('Text', System.ItemNameDisplay, 'computer', 1033)
OR CONTAINSSEMANTIC('Text', *, 'computer', 1033))
RANK BY MERGE(CONVEXCOMBINATION)
További információ az CONTAINSSEMANTIC predikátumról: CONTAINSSEMANTIC predikátum.