Soumission d'une requête simple
Le paramètre query prend une chaîne de requête au format qu'un utilisateur emploierait. Les opérateurs spécifiés par syntax-operators sont utilisés pour analyser cette chaîne de requête dans un objet de requête.
Par défaut, les mots-clés non placés en zone sont mappés dans la zone query spéciale, qui correspond à tout le contenu sauf indication contraire dans le mappage de requête, la source ou la collection.
Message XML :
<QuerySearch xmlns="urn:/velocity/types">
<query>"search engine" OR test</query>
<sources>my-new-collection</sources>
</QuerySearch>
En C# :
QuerySearch qs = new QuerySearch();
qs.sources = COLLECTION;
qs.query = "\"some main document\" OR (first and test)";
qs.syntaxrepositorynode = "custom";
qs.syntaxoperators = "AND and () CONTAINING CONTENT %field%: + NEAR - NOT NOTCONTAINING NOTWITHIN OR0 quotes regex stem THRU BEFORE FOLLOWEDBY weight wildcard wildchar WITHIN WORDS site less-than less-than-or-equal greater-than greater-than-or-equal equal range";
qs.querymodificationmacros = "some_macro_here";
qs.aggregate = true;
qs.aggregatemaxpasses = 3;
qs.authorizationpassword = "password";
qs.authorizationusername = "username";
qs.authorizationrights = "acl1\nacl2\nacl3";
qs.fetch = false;
qs.fetchtimeout = 60000;
qs.num = 200;
qs.nummax = 500;
qs.nummaxSpecified = true;
qs.numoverrequest = 1.3;
qs.numpersource = 25;
qs.numpersourceSpecified = true;
qs.start = 0;
qs.outputboldcontents = "title snippet";
qs.outputboldcontentsexcept = false;
qs.outputboldcontents = "";
qs.outputboldcontentsexcept = true;
qs.outputboldclassroot = "myClass";
qs.outputcachereferencesSpecified = false;
qs.outputcachedataSpecified = true;
qs.outputcontents = "contentA contentB";
qs.outputcontentsmode = QuerySearchOutputcontentsmode.list;
qs.outputcontentsmode = QuerySearchOutputcontentsmode.except;
qs.outputcontentsmode = QuerySearchOutputcontentsmode.defaults;
qs.outputduplicates = true;
qs.outputduplicatesSpecified = true;
qs.outputkey = true;
qs.outputkeySpecified = true;
qs.outputscore = true;
qs.outputscoreSpecified = true;
qs.outputshingles = true;
qs.outputshinglesSpecified = true;
qs.outputsortkeys = true;
qs.outputsortkeysSpecified = true;
qs.outputsummary = true;
qs.outputsummarySpecified = true;
qs.rankdecay = 0.5;
qs.rankdecaySpecified = true;
qs.debug = true;
qs.profile = true;
QuerySearchResponse qsr = port.QuerySearch(qs);
En Java :
QuerySearch qs = new QuerySearch();
qs.setSources(COLLECTION);
qs.setQuery("\"some main document\" OR (first and test)");
QuerySearchResponse qsr = port.querySearch(qs);
Les listes ci-dessous mettent en avant certains attributs query-search courants qui sont utilisés pour contrôler le nombre de résultats renvoyés, et la façon dont les valeurs de ces attributs interagissent :
- start - nombre (basé sur zéro) du premier résultat qui doit être renvoyé
- num - nombre de documents à renvoyer
- num-max - nombre de résultats à classer, généralement défini sur 'start' + 'num'
Par exemple, pour obtenir les n-10 résultats après les 10 premiers, définissez start=10, num=n-10 et num-max=n. Pour obtenir les résultats 55 à 75, définissez start=54, num=20 et num-max=74.
Le reste de cette section fournit des exemples de code pour certaines tâches communes associées à l'envoi de requêtes et au traitement de résultats de requête.
Réduction de documents et de catégories en C# :
QuerySearch qs = new QuerySearch();
qs.collapsebinning = true;
qs.collapsebinningSpecified = true;
qs.collapsenum = 10;
qs.collapsenumSpecified = true;
qs.collapsesortxpaths = new QuerySearchCollapsesortxpaths();
qs.collapsesortxpaths.sort = new sort[1];
qs.collapsesortxpaths.sort[0] = new sort();
qs.collapsesortxpaths.sort[0].order = sortOrder.descending;
qs.collapsesortxpaths.sort[0].xpath = "$some_field";
qs.collapsexpath = "$key";
Correction de l'orthographe lors de l'exécution d'une requête en C# :
QuerySearch qs = new QuerySearch();
qs.spellingconfiguration = new QuerySearchSpellingconfiguration();
qs.spellingconfiguration.spellingcorrectorconfiguration = new spellingcorrectorconfiguration();
qs.spellingconfiguration.spellingcorrectorconfiguration.spellingcorrectorfield = new spellingcorrectorfield[1];
qs.spellingconfiguration.spellingcorrectorconfiguration.spellingcorrectorfield[0] = new spellingcorrectorfield();
qs.spellingconfiguration.spellingcorrectorconfiguration.spellingcorrectorfield[0].dictionary = "default";
qs.spellingconfiguration.spellingcorrectorconfiguration.spellingcorrectorfield[0].field = "myField1|myField2";
qs.spellingconfiguration.spellingcorrectorconfiguration.spellingcorrectorfield[0].stemmer = "case";
qs.spellingenabled = true;
QuerySearchResponse qsr = port.QuerySearch(qs);
queryresults qr = qsr.queryresults;
if (qr.spellingcorrection != null)
{
String correctedQuery =
qr.spellingcorrection.@string;
query q = qr.spellingcorrection.query;
}
Extension wildcard/regex de style ancien lors de l'exécution d'une requête en C# :
QuerySearch qs = new QuerySearch();
qs.dictexpanddictionary = "default";
qs.dictexpandmaxexpansions = 100;
qs.dictexpandmaxexpansionsSpecified = true;
qs.dictexpandregexenabled = true;
qs.dictexpandregexenabledSpecified = true;
qs.dictexpandstemenabled = true;
qs.dictexpandstemenabledSpecified = true;
qs.dictexpandstemstemmers = "case";
qs.dictexpandwildcarddelanguage = true;
qs.dictexpandwildcarddelanguageSpecified = true;
qs.dictexpandwildcardenabled = true;
qs.dictexpandwildcardenabledSpecified = true;
qs.dictexpandwildcardminlength = 1;
qs.dictexpandwildcardminlengthSpecified = true;
qs.dictexpandwildcardsegmenter = "mixed";
Extension de caractère générique/regex lors de l'exécution d'une requête en C# :
QuerySearch qs = new QuerySearch();
qs.termexpandmaxexpansions = 25;
qs.termexpandmaxexpansionsSpecified = true;
qs.termexpanderrorwhenexceedslimit = true;
qs.termexpanderrorwhenexceedslimitSpecified = true;
qs.termexpanderrorwhenexceedslimit = false;
qs.termexpanderrorwhenexceedslimitSpecified = true;