Création des données d'échantillon

Ce modèle d'application "push" crée des éléments de contenu et les met directement en file d'attente. Il est analogue à la plupart des applications Watson Explorer Engine qui mettent directement en file d'attente les données prétraitées, et qui peuvent ne pas s'appuyer sur le pipeline de conversion intégré dans Watson Explorer Engine. Ce pipeline de conversion est utilisé par la plupart des applications "pull" Watson Explorer Engine traditionnelles, comme le modèle d'application évoqué plus haut dans cette partie du document.

Lorsque nous aurons l'assurance que la collection dans laquelle nous souhaitons mettre en file d'attente nos données d'échantillon existe, l'étape suivante consiste à créer un élément crawl-urls qui contiendra les données que nous voulons mettre en file d'attente.

Le code suivant fournit un exemple de la façon dont cet élément et les éléments crawl-data qui le composent sont créés dans Java :

    SearchCollectionEnqueue sce = new SearchCollectionEnqueue();
    SearchCollectionEnqueue.CrawlUrls urlsToEnqueue = new SearchCollectionEnqueue.CrawlUrls();
    sce.setAuthentication(authentication);
    sce.setCollection(collection);
    sce.setCrawlUrls(urlsToEnqueue);

Le code C# équivalent pour cette opération est le suivant :

    SearchCollectionEnqueue enqueue = new SearchCollectionEnqueue();
    enqueue.authentication = auth;
    enqueue.collection = collection;
    if (verbose) Console.WriteLine(" done.");
    if (verbose) Console.Write("Build data to enqueue...");
    enqueue.crawlurls = new SearchCollectionEnqueueCrawlurls();
    crawlurl[] cus = new crawlurl[2];

Les données de chaque "document" que nous indexons sont contenues dans un élément crawl-url dans l'élément crawl-urls et chaque élément de contenu distinct que nous voulons indexer dans le cadre de ce document est contenu dans un autre élément crawl-data dans cet élément crawl-url. Lorsqu'un élément crawl-urls a été créé pour contenir les éléments que vous souhaitez mettre en file d'attente, nous créerons un élément crawl-url et l'élément crawl-data qui le compose.

L'exemple de code suivant fournit un exemple de création et de remplissage d'un élément crawl-url dans Java :

    java.util.List<CrawlUrl> crawlUrlList = urlsToEnqueue.getCrawlUrl();
    
    /* tous les documents ont besoin d'une url, pour l'exploration ou pour les mises à jour ou suppressions ultérieures */
    String urlString = "myproto://doc?id=myuniqueID";
    CrawlUrl crawlUrl = new CrawlUrl();
    crawlUrl.setUrl(urlString);
    /* Ce document comprend des données de contenu html et vxml, qui sont entièrement */
    /* fournies au moment de la mise en file d'attente. Pour éviter que le moteur d'exploration ne tente */
    /* d'extraire des données supplémentaires pour cette url, nous avons défini l'état de celle-ci sur "complete" */
    crawlUrl.setStatus("complete");
    crawlUrlList.add(crawlUrl);
    java.util.List<CrawlData> crawlDataList = crawlUrl.getCrawlData();
    /* des données d'exploration html */
    CrawlData crawlData0 = new CrawlData();
    crawlData0.setContentType("text/html");
    crawlData0.setText("<html><head><title>My HTML page title</title></head><body>My HTML page body with the unique term: Cimmerians.</body></html>");
    crawlDataList.add(crawlData0);
    /* des données d'exploration vxml */
    CrawlData crawlData1 = new CrawlData();
    crawlData1.setContentType("application/vxml");
    CrawlData.Vxml vxml1 = new CrawlData.Vxml();
    crawlData1.setVxml(vxml1);
    java.util.List<Document> documentList = vxml1.getDocument();
    Document d0 = new Document();
    documentList.add(d0);
    java.util.List<Content> contentList = d0.getContent();
    Content c0 = new Content();
    c0.setName("description");
    c0.setValue("Hello Velocity!");
    contentList.add(c0);
    Content c1 = new Content();
    c1.setName("part-number");
    c1.setValue("15217");
    contentList.add(c1);
    crawlDataList.add(crawlData1);

Le code C# équivalent, qui définit également l'objet d'authentification et configure la file d'attente pour qu'elle ne renvoie pas une exception en cas d'échec, est le suivant :

    cus[0] = new crawlurl();
    cus[0].enqueuetype = crawlurlEnqueuetype.reenqueued;
    cus[0].synchronization = crawlurlSynchronization.indexednosync;
    cus[0].url = "myproto://doc?id=2";
    String MY_CRAWL_URL = "myproto://doc?id=1";
    cus[1] = new crawlurl();
    cus[1].url = MY_CRAWL_URL;
    cus[1].synchronization = crawlurlSynchronization.indexednosync;
    cus[1].status = crawlurlStatus.complete;
    cus[1].crawldata = new crawldata[3];
    cus[1].crawldata[0] = new crawldata();
    cus[1].crawldata[0].contenttype = "text/html";
    cus[1].crawldata[0].text = "<html><head><title>My HTML page title</title></head><body>My HTML page body with the unique term: Cimmerians.</body></html>";
    cus[1].crawldata[1] = new crawldata();
    cus[1].crawldata[1].contenttype = "application/vxml";
    cus[1].crawldata[1].vxml = new crawldataVxml();
    document[] doc = new document[1];
    cus[1].crawldata[1].vxml.document = doc;
    doc[0] = new document();
    doc[0].content = new content[2];
    doc[0].content[0] = new content();
    doc[0].content[0].name = "description";
    doc[0].content[0].Value = "hello Velocity!";
    doc[0].content[1] = new content();
    doc[0].content[1].name = "part-number";
    doc[0].content[1].Value = "15217";
    // Configure request
    enqueue.authentication = auth;
    enqueue.collection = collection;
    enqueue.exceptiononfailure = false;
    enqueue.crawlurls.crawlurl = cus;

Notez que, même si nous créons l'élément de données crawl-url localement, il est toujours identifié par une URL unique pour que nous puissions référencer cet élément de manière unique afin de le mettre à jour ou de le supprimer.

Remarque : Ce modèle d'application met en file d'attente les données avec un élément crawl-url dans un élément crawl-urls. Un élément crawl-urls peut contenir n'importe quel nombre d'éléments crawl-url, chacun contenant les éléments crawl-data associés aux différentes parties de données que vous indexez pour cet élément crawl-url.

Plusieurs éléments crawl-url peuvent également être manuellement mis en file d'attente dans les éléments index-atomic. Les données sont généralement uniquement mises en attente avec les éléments index-atomic lors de la mise en file d'attente de l'ensemble de données connexes, ou lors de la mise en file d'attente des données crawl-url connexes qui ne sont pas disponibles au même moment. Voir Regroupement transactionnel d'opérations de mise en file d'attente/suppression pour plus d'informations sur l'indexation atomique.