def _constructSolrQuery()

in plugins/oceanxtremes/datacasting/Writer.py [0:0]


    def _constructSolrQuery(self, startIndex, entriesPerPage, parameters, facets):
        sortKeys = json.loads(self._configuration.get('solr', 'sortKeys'))

        queries = []
        filterQueries = []
        sort = None
        sortDir = 'asc'
        start = '*'
        end = '*'

        for key, value in parameters.items():
            if value != "":
                if key == 'keyword':
                    queries.append(urllib.parse.quote(value))
                elif key == 'shortName':
                    queries.append("primary_dataset_short_name:" + urllib.parse.quote(value))

        if len(queries) == 0:
            queries.append('*:*')

        query = 'q='+'+AND+'.join(queries)+'&version=2.2&indent=on&wt=json'

        if len(filterQueries) > 0:
            query += '&fq='+'+AND+'.join(filterQueries)
        
        if self.facet:
            query += '&rows=0&facet=true&facet.limit=-1&facet.mincount=1&'
            query += '&'.join(['facet.field=' + facet for facet in list(self.facetDefs.values())])
        else:
            query += '&start='+str(startIndex)+'&rows='+str(entriesPerPage)
            if sort is not None:
                query += '&sort=' + urllib.parse.quote(sort + ' ' + sortDir + ",InternalVersion desc")
            else:
                query += '&sort=' + urllib.parse.quote("submit_date desc")

        logging.debug('solr query: '+query)

        return query