com.doculibre.constellio.stats.StatsSearcher.java Source code

Java tutorial

Introduction

Here is the source code for com.doculibre.constellio.stats.StatsSearcher.java

Source

/**
 * Constellio, Open Source Enterprise Search
 * Copyright (C) 2010 DocuLibre inc.
 *
 * This copyrighted material is made available to anyone wishing to use, modify,
 * copy, or redistribute it subject to the terms and conditions of the GNU
 * Lesser General Public License, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
 * for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this distribution; if not, write to:
 * Free Software Foundation, Inc.
 * 51 Franklin Street, Fifth Floor
 * Boston, MA  02110-1301  USA
 */
package com.doculibre.constellio.stats;

import java.io.Serializable;
import java.util.Date;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.response.QueryResponse;

@SuppressWarnings("serial")
public class StatsSearcher implements Serializable {

    public QueryResponse getMostPopularQueries(String collectionName, SolrServer server, Date startDate,
            Date endDate, int start, int row) throws SolrServerException {
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setStart(start);
        solrQuery.setRows(row);
        solrQuery.setSort("freq", SolrQuery.ORDER.desc);
        StringBuffer querySB = new StringBuffer("collection:" + collectionName + " recherche:recherche");
        //      querySB.append(" date:[");
        //      querySB.append(StatsCompiler.format(startDate));
        //      querySB.append(" TO ");
        //      querySB.append(StatsCompiler.format(endDate));
        //      querySB.append("]");
        solrQuery.setQuery(querySB.toString());
        return server.query(solrQuery);
    }

    public QueryResponse getMostPopularQueriesZeroRes(String collectionName, SolrServer server, Date startDate,
            Date endDate, int start, int row) throws SolrServerException {
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setStart(start);
        solrQuery.setRows(row);
        solrQuery.setSort("freq", SolrQuery.ORDER.desc);
        StringBuffer querySB = new StringBuffer("collection:" + collectionName + " zero:true");
        //      querySB.append(" date:[");
        //      querySB.append(StatsCompiler.format(startDate));
        //      querySB.append(" TO ");
        //      querySB.append(StatsCompiler.format(endDate));
        //      querySB.append("]");
        solrQuery.setQuery(querySB.toString());
        return server.query(solrQuery);
    }

    public QueryResponse getMostPopularQueriesWithRes(String collectionName, SolrServer server, Date startDate,
            Date endDate, int start, int row) throws SolrServerException {
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setStart(start);
        solrQuery.setRows(row);
        solrQuery.setSort("freq", SolrQuery.ORDER.desc);
        StringBuffer querySB = new StringBuffer("collection:" + collectionName + " zero:false");
        //      querySB.append(" date:[");
        //      querySB.append(StatsCompiler.format(startDate));
        //      querySB.append(" TO ");
        //      querySB.append(StatsCompiler.format(endDate));
        //      querySB.append("]");
        solrQuery.setQuery(querySB.toString());
        return server.query(solrQuery);
    }

    public QueryResponse getMostPopularQueriesWithClick(String collectionName, SolrServer server, Date startDate,
            Date endDate, int start, int row) throws SolrServerException {
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setStart(start);
        solrQuery.setRows(row);
        solrQuery.setSort("freq", SolrQuery.ORDER.desc);
        StringBuffer querySB = new StringBuffer("collection:" + collectionName + " clickstr:notzero");
        //      querySB.append(" date:[");
        //      querySB.append(StatsCompiler.format(startDate));
        //      querySB.append(" TO ");
        //      querySB.append(StatsCompiler.format(endDate));
        //      querySB.append("]");
        solrQuery.setQuery(querySB.toString());
        return server.query(solrQuery);
    }

    public QueryResponse getMostPopularQueriesWithoutClick(String collectionName, SolrServer server, Date startDate,
            Date endDate, int start, int row) throws SolrServerException {
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setStart(start);
        solrQuery.setRows(row);
        solrQuery.setSort("freq", SolrQuery.ORDER.desc);
        StringBuffer querySB = new StringBuffer("collection:" + collectionName + " clickstr:zero");
        //      querySB.append(" date:[");
        //      querySB.append(StatsCompiler.format(startDate));
        //      querySB.append(" TO ");
        //      querySB.append(StatsCompiler.format(endDate));
        //      querySB.append("]");
        solrQuery.setQuery(querySB.toString());
        return server.query(solrQuery);
    }

    public QueryResponse getQueryLog(String collectionName, SolrServer server, Date startDate, Date endDate,
            int start, int row) throws SolrServerException {
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setStart(start);
        solrQuery.setRows(row);
        solrQuery.setSort("date", SolrQuery.ORDER.desc);
        StringBuffer querySB = new StringBuffer("collection:" + collectionName + " recherche:recherche");
        querySB.append(" date:[");
        querySB.append(StatsCompiler.format(startDate));
        querySB.append(" TO ");
        querySB.append(StatsCompiler.format(endDate));
        querySB.append("]");
        solrQuery.setQuery(querySB.toString());
        return server.query(solrQuery);
    }

    // La liste des URL des documents les plus consult pour une requte
    public QueryResponse getMostClickedDocsForQuery(String collectionName, String query, SolrServer server,
            int start, int row) throws SolrServerException {
        String escapedQuery = StatsCompiler.escape(query);
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setStart(start);
        solrQuery.setRows(row);
        solrQuery.setSort("nbclick", SolrQuery.ORDER.desc);
        StringBuffer querySB = new StringBuffer(
                "collectionName:" + collectionName + " query:\"" + escapedQuery + "\"");
        solrQuery.setQuery(querySB.toString());
        return server.query(solrQuery);
    }

    // La liste des requtes les plus utilises pour une url
    public QueryResponse getMostClickedQueriesForURL(String collectionName, String url, SolrServer server,
            int start, int row) throws SolrServerException {
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setStart(start);
        solrQuery.setRows(row);
        solrQuery.setSort("nbclick", SolrQuery.ORDER.desc);
        StringBuffer querySB = new StringBuffer("collectionName:" + collectionName + " url:\"" + url + "\"");
        solrQuery.setQuery(querySB.toString());
        return server.query(solrQuery);
    }

}