RANK BY-component

De resultaten van een query bevatten zowel de rijen die door de query worden geretourneerd als een rangschikkingswaarde voor elke rij als de rangschikkingskolom is opgenomen in de SELECT-component. De rangschikkingswaarden worden berekend door de zoekmachine en worden geretourneerd als gehele getallen in het bereik nul tot 1000. Om de rangschikkingsresultaten zinvoller te maken, kan de query bepalen hoe onbewerkte rangschikkingswaarden worden berekend in de RANK BY-component.

Dit onderwerp is als volgt ingedeeld:

RANK BY-component

De syntaxis voor de RANK BY-component is als volgt:

WHERE ( <search_condition> ) 
RANK BY [ ( ] <rank_specification> [ ) ]

De RANK BY-component wordt toegepast op de search_condition direct ervoor, waardoor een lagere of hogere rang wordt opgegeven voor rijen die door die zoekvoorwaarde worden geretourneerd dan rijen die door een andere zoekvoorwaarde worden geretourneerd. De haakjes rond de search_condition zijn vereist. De haakjes rond de rangschikkingsspecificatie zijn optioneel.

Meer dan één RANK BY-component kan worden toegepast op één voorwaarde. U kunt extra RANK BY-componenten achter elkaar opnemen met haakjes.

Notitie

Predicaten voor volledige tekst retourneren rangwaarden in het bereik 0 tot 1000. Rangschikkingswaarden voor alle documenten die overeenkomen met een predicaat zonder volledige tekst zijn 1000. Wijzigingen in de rangschikkingswaarden moeten rekening houden met deze informatie.

 

Het rank_specification gedeelte van de RANKBY-component identificeert een of meer functies die moeten worden toegepast op de rangschikkingswaarden. De functie GEWICHT past een vermenigvuldiger toe op de onbewerkte rangschikkingswaarde voor een geretourneerde rij. Hoe kleiner de vermenigvuldiger, hoe lager de resulterende rangschikkingswaarde. De functie COERCION kan worden gebruikt voor het vermenigvuldigen, toevoegen aan of instellen van een specifieke rangschikkingswaarde voor een geretourneerde rij. Elke rangschikkingsspecificatie kan nul of één FUNCTIE GEWICHT en nul of meer COERCION-functies bevatten. Als de functies WEIGHT en COERCION zijn opgenomen in een RANK BY-component, moet de functie WEIGHT eerst zijn.

GEWICHT, functie

De syntaxis van de functie GEWICHT is:

WEIGHT ( <weight_multipler> ) 

De vermenigvuldiger moet een decimaal getal tussen 0,001 en 1,000 zijn. De onbewerkte rangschikkingswaarde die door het predicaat zoekvoorwaarde wordt geretourneerd, wordt vermenigvuldigd met de gewichtsvermenigvuldiger om een nieuwe rangschikkingswaarde in te stellen.

In het volgende voorbeeld geeft de functie GEWICHT documenten met het woord 'Theresa' in het veld System.Document.LastAuthor de helft van de rangschikkingswaarde van documenten met 'Theresa' in het veld System.Author:

WHERE CONTAINS ( System.Author,'"Theresa"' ) 
         RANK BY WEIGHT ( 1.000 )
      OR
      CONTAINS ( System.Document.LastAuthor,'"Theresa"' ) 
         RANK BY WEIGHT ( 0.500 ) 

 

Notitie

De functies contains en FREETEXT predicate column weighting ondersteunen een verkorte indeling met behulp van een dubbele punt tussen de zoekterm en de vermenigvuldiger ("software":0.25). De RANK BY-component biedt geen ondersteuning voor de verkorte vorm.

 

Er is een beperking bij het gebruik van RANK BY WEIGHT: het werkt niet met CONTAINS-componenten die booleaanse voorwaarden gebruiken; Het volgende voorbeeld is bijvoorbeeld niet toegestaan:

CONTAINS ( System.Author,'"Theresa" OR "Teresa"' ) RANK BY WEIGHT ( 0.400 )

COERCION, functie

De rangschikkingsfunctie kan worden gebruikt om de geretourneerde rangschikkingswaarde te wijzigen door optellen of vermenigvuldigen of door deze een specifieke waarde toe te wijzen.

De syntaxis van de functie COERCION is:

COERCION ( <coercion_operation> , <coercion_value> )

De waarde van de dwangwaarde is een geheel getal.

In de volgende tabel worden de beschikbare instellingen voor coercionbewerking beschreven.

Dwangbewerking Beschrijving Waardebereik
ABSOLUUT De geretourneerde rangwaarde is de waarde die is opgegeven in de dwangwaarde. 0 tot 1000
TOEVOEGEN De geretourneerde rangschikkingswaarde is de som van de onbewerkte rangschikkingswaarde en de opgegeven dwangwaarde. 0 tot 1000
VERMENIGVULDIGEN De geretourneerde rangwaarde is het product van de onbewerkte rangschikkingswaarde en de opgegeven dwangwaarde. 0 tot 1000
MINMAX De geretourneerde rangschikkingswaarde is de lineaire toewijzing van de rangscore 0-1000 van het overeenkomende item van CONTAINS of CONTAINSSEMANTIC tussen de opgegeven minimum- en maximumcoderingswaarden. 0 tot 1000

Belangrijk

Zoeken kan rangschikkingswaarden alleen retourneren in het bereik van 0 tot 1000.

In het volgende voorbeeld wordt de functie COERCION gebruikt om alle documenten met 'computer' in de titel in te stellen op een rang van 1000, terwijl de rang van documenten met zowel 'computer' als 'software' in de titel met één kwart wordt verminderd.

WHERE CONTAINS ( System.Title, 'computer' )
        RANK BY COERCION ( ABSOLUTE , 1000 )
        OR 
       CONTAINS ( System.Title, '"computer" AND "software"' )
        RANK BY COERCION ( MULTIPLY, 0.750 ) 

In het volgende voorbeeld wordt de functie COERCION gebruikt om de onbewerkte rang van documenten met de term 'computer' toe te wijzen aan een bereik tussen 500 en 800 op basis van hun semantische overeenkomsten.

WHERE CONTAINSSEMANTIC('text', *, 'computer', 1033)
OR CONTAINSSEMANTIC('image', *, 'computer', 1033)
RANK BY COERCION(MINMAX, 500, 800)
ORDER BY System.Search.Rank DESC

 

Samenvoegen(<merge_operation>)

Wordt gebruikt met de RANK BY-component om de rangschikkingen van alle resultaten te aggregeren om een uiteindelijke gerangschikte lijst met samenvoegresultaten te genereren.

De syntaxis voor de functie SAMENVOEGEN is als volgt:

RANK BY MERGE ( <merge_operation>) 

Samenvoegbewerkingen

In de volgende tabel worden de ondersteunde bewerkingen voor de parameter merge_operation beschreven.

Samenvoegbewerking Beschrijving
CONVEXCOMBINATION Dit samenvoegingsalgoritmen moeten uitsluitend worden gebruikt wanneer de query de volgende componenten bevat: CONTAINS (lexical search), CONTAINSSEMANTIC('Text',...) en CONTAINSSEMANTIC('Image'...) (semantisch zoeken in tekst en afbeeldingen). Het combineert scores van deze drie componenten met behulp van een gewogen sombenadering, waardoor een hogere prioriteit wordt gegeven aan lexicale scores door ze grotere gewichten toe te wijzen in vergelijking met semantische scores. De uiteindelijke rang is tussen 0 en 1000.
MIN Dit samenvoegingsalgoritmen zijn het standaardgedrag in het geval van een AND-cursor. Hiermee wordt de minimale rang van alle resultaten geselecteerd.
MAX Dit samenvoegingsalgoritmen zijn het standaardgedrag in het geval van een OR-cursor. Hiermee wordt de maximumpositie van alle resultaten geselecteerd.

Notitie

Als u RANK BY MERGE(MIN) gebruikt met een OR-cursor of RANK BY MERGE(MAX) met een AND-cursor, worden de verwachte resultaten niet weergegeven. Het wordt aanbevolen om de functie MERGE expliciet te gebruiken met de COMPONENT RANK BY in combinatie met de operator CONVEXCOMBINATION bij het samenvoegen van lexicale en semantische zoekresultaten in één resultatenset.

Example

In het volgende voorbeeld ziet u het gebruik van de functie SAMENVOEGEN om items lexisch en semantisch te zoeken die overeenkomen met het woord 'computer' in de velden 'Afbeelding' of 'Tekst'. De zoekresultaten worden vervolgens gerangschikt met behulp van de operator RANK BY MERGE, waarmee scores van alle resultaten worden geaggregeerd om een uiteindelijke gerangschikte lijst te genereren.

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) 

Zie CONTAINSSEMANTIC predicaat voor meer informatie over het predicaat CONTAINSSEMANTIC.