Example usage for org.apache.solr.client.solrj.request UpdateRequest add

List of usage examples for org.apache.solr.client.solrj.request UpdateRequest add

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj.request UpdateRequest add.

Prototype

public UpdateRequest add(final Collection<SolrInputDocument> docs) 

Source Link

Document

Add a collection of SolrInputDocuments to this request

Usage

From source file:at.newmedialab.lmf.search.services.indexing.SolrCoreRuntime.java

License:Apache License

/**
 * Queue the input document in the document queue of this SolrCoreRuntime and check whether it is
 * necessary to commit.//from   w  ww.j a  v  a  2s. co  m
 * 
 * @param doc the document to be added to the Solr Core
 */
public void queueInputDocument(SolrInputDocument doc) {
    if (doc != null) {
        serverLock.lock();
        try {
            final Object fv = doc.getFieldValue("id");
            if (fv != null) {
                UpdateRequest update = new UpdateRequest();
                update.setCommitWithin(10000);
                update.add(doc);
                //update.setAction(ACTION.COMMIT, false, false);
                server.request(update);
            } else {
                log.warn("({}) rejected document without 'id' for update", config.getName());
            }
        } catch (IOException e) {
            log.warn("I/O exception while adding SOLR document to index", e);
        } catch (SolrServerException e) {
            log.warn("server exception while adding SOLR document to index", e);
        } finally {
            serverLock.unlock();
        }
    }
}

From source file:com.digitalpebble.behemoth.solr.SOLRWriter.java

License:Apache License

public void write(BehemothDocument doc) throws IOException {
    final SolrInputDocument inputDoc = convertToSOLR(doc);
    try {//  ww  w .  ja v  a  2s  .  co  m
        progress.progress();
        if (params == null) {
            solr.add(inputDoc);
        } else {
            UpdateRequest req = new UpdateRequest();
            req.setParams(params);
            req.add(inputDoc);
            solr.request(req);
        }
    } catch (SolrServerException e) {
        throw makeIOException(e);
    }
}

From source file:com.doculibre.constellio.stats.StatsCompiler.java

License:Open Source License

public synchronized void saveStats(SimpleSearch simpleSearch, SolrServer indexJournal, SolrServer indexCompile,
        QueryResponse res) throws SolrServerException, IOException {
    String collectionName = simpleSearch.getCollectionName();
    String luceneQuery = simpleSearch.getLuceneQuery();

    GregorianCalendar calendar = new GregorianCalendar();
    Date time = new Date();
    calendar.setTime(time);/*from   www  . j a v  a  2  s.  c o m*/
    String query = luceneQuery;
    String escapedQuery = escape(query);
    long nbRes = res.getResults().getNumFound();
    long qTime = res.getQTime();
    String desplayDate = time.toString();
    String searchDate = format(time);
    String queryWithParams = simpleSearch.toSimpleParams().toString();

    SolrInputDocument doc = new SolrInputDocument();
    doc.addField("id", desplayDate + query);
    doc.addField("query", query);
    doc.addField("queryWithParams", queryWithParams);
    doc.addField("nbres", "" + nbRes);
    doc.addField("qtime", "" + qTime);
    doc.addField("dateaffiche", desplayDate);
    doc.addField("date", searchDate);
    doc.addField("recherche", "recherche");
    doc.addField("collection", collectionName);

    UpdateRequest up = new UpdateRequest();
    up.setAction(ACTION.COMMIT, true, true);
    up.add(doc);

    up.process(indexJournal);

    String compileId = "collection_" + collectionName + " id_" + escapedQuery;
    SolrQuery solrQuery = new SolrQuery();
    // Requte Lucene
    solrQuery.setQuery("id:\"" + compileId + "\"");
    // nb rsultats par page
    solrQuery.setRows(15);
    // page de dbut
    solrQuery.setStart(0);
    QueryResponse qr = indexCompile.query(solrQuery);
    if (qr.getResults().getNumFound() > 0) {
        SolrDocument sd = qr.getResults().get(0);
        long freq = (Long) sd.getFieldValue("freq");
        long click = (Long) sd.getFieldValue("click");
        // indexCompile.deleteById(query);
        SolrInputDocument docCompile = new SolrInputDocument();
        docCompile.addField("id", compileId);
        docCompile.addField("query", query);
        if (!((String) sd.getFieldValue("nbres")).equals("0")) {
            ConstellioSpringUtils.getAutocompleteServices().onQueryAdd(docCompile, query);
        }
        docCompile.addField("freq", freq + 1);
        docCompile.addField("nbres", "" + nbRes);
        docCompile.addField("recherche", "recherche");
        docCompile.addField("collection", collectionName);
        if (nbRes == 0) {
            docCompile.addField("zero", "true");
        } else {
            docCompile.addField("zero", "false");
        }
        docCompile.addField("click", click);
        if (click == 0) {
            docCompile.addField("clickstr", "zero");
        } else {
            docCompile.addField("clickstr", "notzero");
        }
        up.clear();
        up.setAction(ACTION.COMMIT, true, true);
        up.add(docCompile);

        up.process(indexCompile);
    } else {
        SolrInputDocument docCompile = new SolrInputDocument();
        docCompile.addField("id", compileId);
        docCompile.addField("query", query);
        if (nbRes != 0) {
            ConstellioSpringUtils.getAutocompleteServices().onQueryAdd(docCompile, query);
        }
        docCompile.addField("freq", 1);
        docCompile.addField("recherche", "recherche");
        docCompile.addField("collection", collectionName);
        docCompile.addField("nbres", "" + nbRes);
        if (nbRes == 0) {
            docCompile.addField("zero", "true");
        } else {
            docCompile.addField("zero", "false");
        }
        docCompile.addField("click", 0);
        docCompile.addField("clickstr", "zero");
        up.clear();
        up.setAction(ACTION.COMMIT, true, true);
        up.add(docCompile);

        up.process(indexCompile);
    }
}

From source file:com.doculibre.constellio.stats.StatsCompiler.java

License:Open Source License

public synchronized void computeClick(String collectionName, SolrServer indexCompile, SimpleSearch simpleSearch)
        throws SolrServerException, IOException {
    String query = simpleSearch.getLuceneQuery();
    String escapedQuery = escape(query);
    String compileId = "collection_" + collectionName + " id_" + escapedQuery;

    SolrQuery solrQuery = new SolrQuery();
    // Requte Lucene
    solrQuery.setQuery("id:\"" + compileId + "\"");
    // nb rsultats par page
    solrQuery.setRows(15);/*from   w  w  w  . j av a 2 s .  c  o  m*/
    // page de dbut
    solrQuery.setStart(0);

    QueryResponse qr = indexCompile.query(solrQuery);
    if (qr.getResults().getNumFound() > 0) {
        SolrDocument sd = qr.getResults().get(0);
        long click = (Long) sd.getFieldValue("click");
        indexCompile.deleteById(escapedQuery);
        SolrInputDocument docCompile = new SolrInputDocument();
        docCompile.addField("id", compileId);
        docCompile.addField("query", query);
        if (!((String) sd.getFieldValue("nbres")).equals("0")) {
            ConstellioSpringUtils.getAutocompleteServices().onQueryAdd(docCompile, query);
        }
        docCompile.addField("freq", (Long) sd.getFieldValue("freq"));
        docCompile.addField("recherche", "recherche");
        docCompile.addField("zero", (String) sd.getFieldValue("zero"));
        docCompile.addField("nbres", (String) sd.getFieldValue("nbres"));
        docCompile.addField("click", (click + 1));
        docCompile.addField("clickstr", "notzero");
        docCompile.addField("collection", collectionName);
        UpdateRequest up = new UpdateRequest();
        up.setAction(ACTION.COMMIT, true, true);
        up.add(docCompile);
        up.process(indexCompile);
    }
}

From source file:com.doculibre.constellio.stats.StatsCompiler.java

License:Open Source License

public synchronized void computeClickUrl(String collectionName, String url, String recordURL,
        SolrServer indexurl, SimpleSearch simpleSearch) throws SolrServerException, IOException {
    String query = simpleSearch.getLuceneQuery();
    String escapedQuery = escape(query);
    String compileId = "url_" + url + " collection_" + collectionName + " id_" + escapedQuery;
    SolrQuery solrQuery = new SolrQuery();
    // Requte Lucene
    solrQuery.setQuery("id:\"" + compileId + "\"");
    // nb rsultats par page
    solrQuery.setRows(15);/*  w w  w  . j  ava  2 s  .c om*/
    // page de dbut
    solrQuery.setStart(0);
    QueryResponse qr = indexurl.query(solrQuery);
    if (qr.getResults().getNumFound() > 0) {
        SolrDocument sd = qr.getResults().get(0);
        long nbClick = (Long) sd.getFieldValue("nbclick");
        SolrInputDocument doc = new SolrInputDocument();
        doc.addField("id", compileId);
        doc.addField("query", escapedQuery);
        doc.addField("url", url);
        doc.addField("nbclick", nbClick + 1);
        doc.addField("recordURL", recordURL);
        doc.addField("collectionName", collectionName);
        UpdateRequest up = new UpdateRequest();
        up.setAction(ACTION.COMMIT, true, true);
        up.add(doc);
        up.process(indexurl);
    } else {
        SolrInputDocument doc = new SolrInputDocument();
        doc.addField("id", compileId);
        doc.addField("query", escapedQuery);
        doc.addField("url", url);
        doc.addField("nbclick", 0);
        doc.addField("recordURL", recordURL);
        doc.addField("collectionName", collectionName);
        UpdateRequest up = new UpdateRequest();
        up.setAction(ACTION.COMMIT, true, true);
        up.add(doc);
        up.process(indexurl);
    }
}

From source file:com.ifactory.press.db.solr.processor.UpdateDocValuesTest.java

License:Apache License

@Test
/** The update service throws an error when key field is provided with no value fields */
public void testMissingValue() throws Exception {
    insertTestDocuments(1);/*from   w w  w .ja  va  2  s.  c  om*/
    UpdateRequest req = new UpdateRequest();
    SolrInputDocument doc = new SolrInputDocument();
    req.add(doc);
    req.setPath(UPDATE_DOCVALUES);
    req.setParam(UpdateDocValuesProcessor.UPDATEDV_KEY_FIELD, "id");
    req.setParam(UpdateDocValuesProcessor.UPDATEDV_VALUE_FIELD, "x");
    // doc with no value for key
    try {
        solr.request(req);
        assertFalse("expected exception not thrown", true);
    } catch (SolrException e) {
        assertTrue(e.getMessage(), e.getMessage().contains("no value for updatedv.key.field"));
    }

    doc.addField("id", "id0");
    req.setParam(UpdateDocValuesProcessor.UPDATEDV_VALUE_FIELD, null);
    // no UpdateDocValuesProcessor.UPDATEDV_VALUE_FIELD
    try {
        solr.request(req);
        assertFalse("expected exception not thrown", true);
    } catch (SolrException e) {
        assertTrue(e.getMessage().contains("missing parameter updatedv.value.field"));
    }
}

From source file:com.ifactory.press.db.solr.processor.UpdateDocValuesTest.java

License:Apache License

@Test
/** The service takes the first of multiple values */
public void testMultipleValues() throws Exception {
    insertTestDocuments(1);//from   www.  ja  va 2  s . c  o  m
    UpdateRequest req = updateDocValues();
    SolrInputDocument doc = new SolrInputDocument();
    doc.addField(URI, uri(1));
    doc.addField(WEIGHT_DV, 0);
    doc.addField(WEIGHT_DV, 1);
    req.add(doc);
    solr.request(req);
    // no error thrown
}

From source file:com.ifactory.press.db.solr.processor.UpdateDocValuesTest.java

License:Apache License

@Test
/** Child documents' values should be set when indexed */
public void testBlockIndex() throws Exception {
    insertTestDocuments(1, 1, false);//  www .ja  v a2  s  .  co m

    // no doc values yet
    assertDocValue(uri(1), 0);
    assertDocValue(uriChild(1, 1), null);

    UpdateRequest req = updateDocValues();
    SolrInputDocument doc = new SolrInputDocument();
    doc.addField(URI, uri(1));
    doc.addField(WEIGHT_DV, 3);
    req.add(doc);
    solr.request(req);
    solr.commit(false, true, true);

    // child doc dv still not set
    assertDocValue(uri(1), 3);
    assertDocValue(uriChild(1, 1), null);

    SolrInputDocument child = new SolrInputDocument();
    child.addField(URI, uriChild(1, 1));
    child.addField(WEIGHT_DV, 7);
    doc.addChildDocument(child);
    solr.request(req);
    solr.commit(false, true, true);

    // child doc dv updated
    assertDocValue(uri(1), 3);
    assertDocValue(uriChild(1, 1), 7);

    // re-add docs, preserving existing docvalues:
    insertTestDocuments(1, 1, true);
    assertDocValue(uri(1), 3);
    assertDocValue(uriChild(1, 1), 7);

}

From source file:com.ifactory.press.db.solr.processor.UpdateDocValuesTest.java

License:Apache License

private void insertTestDocuments(int n, int nkids, boolean preserveDV) throws Exception {
    UpdateRequest req = new UpdateRequest();
    req.setPath(UPDATE_DOCVALUES);//from w w w  .  ja  v  a  2s. c  o m
    if (preserveDV) {
        req.setParam(UpdateDocValuesProcessor.UPDATEDV_VALUE_FIELD, WEIGHT_DV);
    }
    for (int i = 1; i <= n; i++) {
        SolrInputDocument doc = new SolrInputDocument();
        doc.addField(URI, uri(i));
        doc.addField(TEXT_FIELD, "This is document " + i);
        // NOTE: must provide a value for at least one document in order to create the field:
        // it's not enough to just put it in the solr schema
        if (!preserveDV) {
            doc.addField(WEIGHT_DV, 0);
        }
        for (int j = 1; j <= nkids; j++) {
            SolrInputDocument kid = new SolrInputDocument();
            kid.addField(URI, uriChild(i, j));
            kid.addField(TEXT_FIELD, "This is child document " + i + "/" + j);
            doc.addChildDocument(kid);
        }
        req.add(doc);
    }
    solr.request(req);
    solr.commit(false, true, true);
}

From source file:com.ifactory.press.db.solr.processor.UpdateDocValuesTest.java

License:Apache License

private void updateDocValues(int n) throws Exception {
    UpdateRequest req = updateDocValues();
    for (int i = 1; i <= n; i++) {
        SolrInputDocument doc = new SolrInputDocument();
        doc.addField(URI, uri(i));
        doc.addField(WEIGHT_DV, n - i);//from   w w w  . jav a2  s.com
        req.add(doc);
    }
    solr.request(req);
    solr.commit(false, true, true);
}