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);
Conseil : Aucun des paramètres query-search n'est obligatoire. En particulier, vous pouvez simplement transmettre une requête query à la fonction sans spécifier de sources, et la fonction query-search renvoie la requête analysée.

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 :

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.

Remarque : Lorsque vous utilisez query-search, les noeuds transmis en extra-xml doivent être désencapsulés ou seulement encapsulés dans des noeuds génériques tels que <scope> ou <_CONTAINER_>. L'encapsulage de noeuds dans un noeud déjà utilisé par Watson Explorer Engine, tel que <vce>, cause une pollution de l'espace-noms.

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;