Example usage for org.apache.solr.client.solrj SolrQuery setParam

List of usage examples for org.apache.solr.client.solrj SolrQuery setParam

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj SolrQuery setParam.

Prototype

public SolrQuery setParam(String name, boolean value) 

Source Link

Usage

From source file:gr.aueb.service.EmailService.java

public static List<Email> getEmails(List<String> keywords) {
    String query = getEmailServiceQuery(keywords);
    SolrQuery solrQuery;
    solrQuery = new SolrQuery();
    if (query.startsWith(" AND")) {
        query = query.substring(4);//from www .ja  v a  2 s . com
    }
    if (query.startsWith("AND")) {
        query = query.substring(3);
    }
    solrQuery.setQuery(query);
    if (!query.equals("")) {
        solrQuery.setHighlight(true).setHighlightSnippets(1).setHighlightSimplePost("</strong>")
                .setHighlightSimplePre("<strong>"); //set other params as needed
        solrQuery.setParam("hl.fl", "content_t");
        solrQuery.setParam("hl.requireFieldMatch", "true");

    }

    solrQuery.setRows(15);
    String urlString = "http://195.251.252.8:8983/solr/mail";
    //SolrClient server = new HttpSolrClient.Builder(urlString).build();
    SolrClient server = new HttpSolrClient(urlString);
    QueryResponse response = null;
    try {
        response = server.query(solrQuery);

    } catch (Exception e) {
        System.out.println(e);
    }
    SolrDocumentList rs = response.getResults();
    long numFound = rs.getNumFound();
    int numResultsDisplay = (int) numFound;
    ArrayList<Email> items = new ArrayList<Email>();

    ListIterator<SolrDocument> iter = rs.listIterator();

    while (iter.hasNext()) {
        SolrDocument doc = iter.next();
        String id = doc.get("messageId").toString();
        String from = doc.get("from").toString();
        String sentDate = doc.get("sentDate").toString();
        String subject = doc.get("subject").toString();
        String content = doc.get("content").toString();

        items.add(new Email(id, from, sentDate, subject, content));
    }
    return items;
}

From source file:gwap.search.DetailedSearch.java

License:Open Source License

@Override
public SolrQuery generateQuery() {
    StringBuilder query = new StringBuilder();

    //FIXME: alle Lucene Special chars escapen

    String language = localeSelector.getLanguage();
    query.append(parseField(queryBean.getTags(), "tag_" + language));
    query.append(parseField(queryBean.getArtist(), "artist"));
    query.append(parseField(queryBean.getTitle(), "title"));
    query.append(parseField(queryBean.getLocation(), "location_institution"));
    query.append(parseField(queryBean.getYear(), "datecreated"));

    log.info("Detailed search: #0", query.toString());

    SolrQuery solrQuery = new SolrQuery(query.toString());
    solrQuery.setParam("defType", "edismax");
    return solrQuery;
}

From source file:gwap.search.MitAlphabeticSearchBean.java

License:Open Source License

@Override
public SolrQuery generateQuery() {
    if (isQueryEmpty()) {
        queryBean.setLetter("A");
    }//from  w  w w.  j  a v a2s  . c  om
    String letter = queryBean.getLetter();
    letter = letter.toUpperCase();
    queryBean.setLetter(letter);
    if (!letter.matches("[a-zA-Z]")) {
        log.warn("Query by letter #0 not possible", letter);
        return null;
    }
    SolrQuery solrQuery = new SolrQuery("statement_untokenized:" + letter + "*");
    solrQuery.setParam("defType", "edismax");
    solrQuery.setParam("sort", "statement_untokenized asc");
    return solrQuery;
}

From source file:gwap.search.MitSearchBean.java

License:Open Source License

@Override
public SolrQuery generateQuery() {
    if (isQueryEmpty())
        return null;
    // 1. Parse queryString and look for locations and special characterization words (variable "specialWords")
    String[] queryArray = queryBean.getQueryString().split("\\s+");
    String solrQueryString = "";
    String solrBoostString = null;
    for (int i = 0; i < queryArray.length; i++) {
        boolean found = false;
        for (SearchSpecialParameter special : specialWords) {
            if (special.getWord().equals(queryArray[i])) {
                solrQueryString += special.getQueryReplacement() + " ";
                solrBoostString = special.getBoostFunction();
                found = true;//from  w w w.  j  a  v  a2s .  c  o  m
            }
        }
        if (!found)
            solrQueryString += queryArray[i] + " ";
    }
    //TODO for locations

    SolrQuery solrQuery = new SolrQuery(solrQueryString);
    solrQuery.setParam("defType", "edismax");
    solrQuery.setParam("qf", "statement standard highlighted location_name");
    if (solrBoostString != null)
        solrQuery.setParam("bf", solrBoostString);
    return solrQuery;
}

From source file:gwap.search.SolrSearchBean.java

License:Open Source License

/**
 * Override this method to change the query behaviour
 *///www . ja va2  s  .  co  m
public SolrQuery generateQuery() {
    if (isQueryEmpty())
        return null;
    String language = localeSelector.getLanguage();

    SolrQuery solrQuery = new SolrQuery(queryBean.getQueryString());
    solrQuery.setParam("defType", "dismax");
    String fields = "tag";
    if (language != null && language.length() == 2)
        fields += "_" + language;
    fields += " title^2.0 artist^2.0 teaser^0.2 location institution datecreated";
    solrQuery.setParam("qf", fields);
    return solrQuery;
}

From source file:influent.server.search.SolrLinkSearch.java

License:MIT License

@Override
public FL_SearchResults search(Map<String, List<FL_PropertyMatchDescriptor>> termMap, List<FL_OrderBy> orderBy,
        long start, long max, FL_LevelOfDetail levelOfDetail) throws AvroRemoteException {
    ArrayList<FL_SearchResult> results = new ArrayList<FL_SearchResult>();
    SolrLinkSearchIterator ssr;//w ww  .  j  av a2 s. c om

    try {
        List<String> ids = new ArrayList<String>();

        // Collect all the ids, for mapping later
        for (Map.Entry<String, List<FL_PropertyMatchDescriptor>> entry : termMap.entrySet()) {
            List<FL_PropertyMatchDescriptor> termsByType = entry.getValue();
            for (FL_PropertyMatchDescriptor term : termsByType) {

                // Find keys that are built in ID types for transactions
                if (term.getKey().equals(FL_RequiredPropertyKey.FROM.name())
                        || term.getKey().equals(FL_RequiredPropertyKey.TO.name())
                        || term.getKey().equals(FL_RequiredPropertyKey.ENTITY.name())
                        || term.getKey().equals(FL_RequiredPropertyKey.LINKED.name())) {

                    // Strip out the native ID
                    Object range = term.getRange();
                    if (range instanceof FL_SingletonRange) {
                        String val = (String) SingletonRangeHelper.value(range);
                        ids.add(val);
                    } else if (range instanceof FL_ListRange) {

                        List<Object> values = ((FL_ListRange) range).getValues();
                        List<Object> values2 = new ArrayList<Object>();
                        for (Object obj : values) {
                            String val = (String) obj;
                            values2.add(val);
                            ids.add(val);
                        }
                    }
                }
            }
        }

        // Form the query
        String searchStr = SearchSolrHelper.toSolrQuery(termMap, getDescriptors(), getPropertyFieldProvider());

        // issue the query
        SolrQuery query = new SolrQuery();
        query.setQuery(searchStr);
        query.setFields("*", "score");

        String solrGroupField = getDescriptors().getGroupField();
        if (solrGroupField != null) {
            query.setParam("group", true);
            query.setParam("group.field", solrGroupField);
            query.setParam("group.limit", levelOfDetail == FL_LevelOfDetail.FULL ? "-1" : "3");
            query.setParam("group.ngroups", true);
        }

        // form a union of sort by fields for all types
        orderBy = PropertyDescriptorHelper.mapOrderBy(orderBy, getDescriptors().getProperties(),
                termMap.keySet());

        if (orderBy != null) {
            for (FL_OrderBy ob : orderBy) {
                String key = (ob.getPropertyKey().equals(FL_ReservedPropertyKey.MATCH.name())) ? "score"
                        : ob.getPropertyKey();

                query.addSortField(key, ob.getAscending() ? ORDER.asc : ORDER.desc);
            }
        }

        ssr = buildSolrLinkSearchIterator(getNamespaceHandler(), _solr, query, _config, levelOfDetail,
                _applicationConfiguration, getPropertyFieldProvider());

        if (start >= 0) {
            ssr.setStartIndex((int) start);
        }
        if (max > 0) {
            ssr.setMaxResults((int) max);
        }

        // Add results from the matching documents
        while (ssr.hasNext()) {
            FL_SearchResult fsr = ssr.next();
            results.add(fsr);
        }

    } catch (Exception e) {
        throw new AvroRemoteException(e);
    }

    return FL_SearchResults.newBuilder().setTotal((long) ssr.getTotalResults()).setResults(results)
            .setLevelOfDetail(levelOfDetail).build();
}

From source file:io.vertigo.dynamo.plugins.search.solr.SolrStatement.java

License:Apache License

private static SolrQuery createSolrQuery(final SearchQuery searchQuery,
        final IndexFieldNameResolver indexFieldNameResolver, final FacetedQuery filtersQuery,
        final int rowsPerQuery) {
    final SolrQuery solrQuery = new SolrQuery();
    solrQuery.set(CommonParams.ROWS, rowsPerQuery);
    solrQuery.setFields(SolrDocumentCodec.URN, SolrDocumentCodec.FULL_RESULT);
    if (searchQuery.isSortActive()) {
        final DtField sortField = searchQuery.getIndexDefinition().getIndexDtDefinition()
                .getField(searchQuery.getSortField());
        final String indexSortFieldName = indexFieldNameResolver.obtainIndexFieldName(sortField);
        solrQuery.addSortField(indexSortFieldName, searchQuery.getSortAsc() ? ORDER.asc : ORDER.desc);
    }//from  w w w .  j  a  va2s . c  om
    //solrQuery.set(CommonParams.START, 0); //peut servir d'offset
    final StringBuilder query = new StringBuilder();
    if (searchQuery.isBoostMostRecent()) {
        appendBoostMostRecent(searchQuery, query);
    }
    query.append(translateToSolr(searchQuery.getListFilter(), indexFieldNameResolver));
    solrQuery.setQuery(query.toString());

    for (final ListFilter facetQuery : filtersQuery.getListFilters()) {
        solrQuery.addFilterQuery(translateToSolr(facetQuery, indexFieldNameResolver));
    }
    solrQuery.setHighlight(true);
    solrQuery.setParam("hl.fl", "*");
    solrQuery.setHighlightSnippets(3);
    solrQuery.setParam("hl.mergeContiguous", true);
    //Ci dessous : pour avoir les facettes avec un compteur de doc  0
    //Pour l'instant dsactiv car elles peuvent tre dduites des dfinitions de facettes sauf pour celles tires des mots du dictionnaires dont on ne maitrise pas la quantit
    //solrQuery.setParam("facet.missing", true);

    return solrQuery;
}

From source file:kbSRU.kbSRU.java

License:Open Source License

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType(XML_RESPONSE_HEADER); // Talkback happens in XML form.
    response.setCharacterEncoding("UTF-8"); // Unicode++
    request.setCharacterEncoding("UTF-8");

    PrintWriter out = null; // The talkback buffer.

    // handle startrecord 
    Integer startRecord = 0;/*from   w w w  . j a  v  a  2s .c  om*/

    if (!(request.getParameter("startRecord") == null)) {
        try {
            startRecord = Integer.parseInt(request.getParameter("startRecord")) - 1;
        } catch (NumberFormatException e) {
            startRecord = 0;
        }
    }

    // maximumrecords
    Integer maximumRecords = Integer.parseInt(this.config.getProperty("default_maximumRecords"));
    if (!(request.getParameter("maximumRecords") == null)) {
        maximumRecords = Integer.parseInt(request.getParameter("maximumRecords"));
    }

    // operation 
    String operation = request.getParameter("operation");

    // x_collection
    String x_collection = request.getParameter("x-collection");
    if (x_collection == null)
        x_collection = this.config.getProperty("default_x_collection");
    if (x_collection == null)
        operation = null;

    // sortkeys
    String sortKeys = request.getParameter("sortKeys");

    // sortorder
    String sortOrder = request.getParameter("sortOrder");

    // recordschema 
    String recordSchema = request.getParameter("recordSchema");
    if (recordSchema == null)
        recordSchema = "dc";

    if (recordSchema.equalsIgnoreCase("dcx")) {
        recordSchema = "dcx";
    }

    if (recordSchema.equalsIgnoreCase("solr")) {
        recordSchema = "solr";
    }

    // query request 
    String query = request.getParameter("query");
    String q = request.getParameter("q");

    // who is requestor ?
    String remote_ip = request.getHeader("X-FORWARDED-FOR");

    if (remote_ip == null) {
        remote_ip = request.getRemoteAddr().trim();
    } else {
        remote_ip = request.getHeader("X-FORWARDED-FOR");
    }

    // handle debug 
    Boolean debug = Boolean.parseBoolean(request.getParameter("debug"));
    if (!debug) {
        out = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "UTF8"), true);
    }

    // handle query
    if ((query == null) && (q != null)) {
        query = q;
    } else {
        if ((query != null) && (q == null)) {
            q = query;
        } else {
            operation = null;
        }
    }

    // handle operation
    if (operation == null) {
        if (query != null) {
            operation = "searchRetrieve";
        } else {
            operation = "explain";
        }
    }

    //  searchRetrieve 
    if (operation.equalsIgnoreCase("searchRetrieve")) {
        if (query == null) {
            operation = "explain";
            log.debug(operation + ":" + query);
        }
    }

    // start talking back.
    String[] sq = { "" };
    String solrquery = "";

    // facet

    String facet = null;
    List<FacetField> fct = null;

    if (request.getParameter("facet") != null) {
        facet = request.getParameter("facet");
        log.debug("facet : " + facet);
    }

    if (operation == null) {
        operation = "searchretrieve";
    } else { // explain response
        if (operation.equalsIgnoreCase("explain")) {
            log.debug("operation = explain");
            out.write("<srw:explainResponse xmlns:srw=\"http://www.loc.gov/zing/srw/\">");
            out.write("</srw:explainResponse>");
        } else { // DEBUG routine
            operation = "searchretrieve";

            String triplequery = null;

            if (query.matches(".*?\\[.+?\\].*?")) { // New symantic syntax
                triplequery = symantic_query(query);
                query = query.split("\\[")[0] + " " + triplequery;
                log.fatal(triplequery);

                solrquery = CQLtoLucene.translate(query, log, config);
            } else {
                solrquery = CQLtoLucene.translate(query, log, config);
            }
            log.debug(solrquery);

            if (debug == true) {
                response.setContentType(HTML_RESPONSE_HEADER);
                out = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "UTF8"), true);
                out.write("<html><body>\n\n");
                out.write("'" + remote_ip + "'<br>\n");
                out.write("<form action='http://www.kbresearch.nl/kbSRU'>");
                out.write("<input type=text name=q value='" + query + "' size=120>");
                out.write("<input type=hidden name=debug value=True>");
                out.write("<input type=submit>");
                out.write("<table border=1><tr><td>");
                out.write("q</td><td>" + query + "</td></tr><tr>");
                out.write("<td>query out</td><td>" + URLDecoder.decode(solrquery) + "</td></tr>");
                out.write("<tr><td>SOLR_URL</td><td> <a href='"
                        + this.config.getProperty("collection." + x_collection.toLowerCase() + ".solr_baseurl")
                        + "/?q=" + solrquery + "'>"
                        + this.config.getProperty("collection." + x_collection.toLowerCase() + ".solr_baseurl")
                        + "/select/?q=" + solrquery + "</a><br>" + this.config.getProperty("solr_url")
                        + solrquery + "</td></tr>");
                out.write("<b>SOLR_QUERY</b> : <BR> <iframe width=900 height=400 src='"
                        + this.config.getProperty("collection." + x_collection.toLowerCase() + ".solr_baseurl")
                        + "/../?q=" + solrquery + "'></iframe><BR>");
                out.write("<b>SRU_QUERY</b> : <BR> <a href=" + this.config.getProperty("baseurl") + "?q="
                        + query + "'>" + this.config.getProperty("baseurl") + "?q=" + query
                        + "</a><br><iframe width=901 height=400 src='http://www.kbresearch.nl/kbSRU/?q=" + query
                        + "'></iframe><BR>");
                out.write("<br><b>JSRU_QUERY</b> : <BR><a href='http://jsru.kb.nl/sru/?query=" + query
                        + "&x-collection=" + x_collection + "'>http://jsru.kb.nl/sru/?query=" + query
                        + "&x-collection=GGC</a><br><iframe width=900 height=400 src='http://jsru.kb.nl/sru/?query="
                        + query + "&x-collection=GGC'></iframe>");

            } else { // XML SearchRetrieve response
                String url = this.config
                        .getProperty("collection." + x_collection.toLowerCase() + ".solr_baseurl");
                String buffer = "";
                CommonsHttpSolrServer server = null;
                server = new CommonsHttpSolrServer(url);
                log.fatal("URSING " + url);
                server.setParser(new XMLResponseParser());
                int numfound = 0;
                try {
                    SolrQuery do_query = new SolrQuery();
                    do_query.setQuery(solrquery);
                    do_query.setRows(maximumRecords);
                    do_query.setStart(startRecord);

                    if ((sortKeys != null) && (sortKeys.length() > 1)) {
                        if (sortOrder != null) {
                            if (sortOrder.equals("asc")) {
                                do_query.setSortField(sortKeys, SolrQuery.ORDER.asc);
                            }
                            if (sortOrder.equals("desc")) {
                                do_query.setSortField(sortKeys, SolrQuery.ORDER.desc);
                            }
                        } else {
                            for (String str : sortKeys.trim().split(",")) {
                                str = str.trim();
                                if (str.length() > 1) {
                                    if (str.equals("date")) {
                                        do_query.setSortField("date_date", SolrQuery.ORDER.desc);
                                        log.debug("SORTORDERDEBUG | DATE! " + str + " | ");
                                        break;
                                    } else {
                                        do_query.setSortField(str + "_str", SolrQuery.ORDER.asc);
                                        log.debug("SORTORDERDEBUG | " + str + " | ");
                                        break;
                                    }
                                }
                            }
                        }
                    }

                    if (facet != null) {
                        if (facet.indexOf(",") > 1) {
                            for (String str : facet.split(",")) {
                                if (str.indexOf("date") > 1) {
                                    do_query.addFacetField(str);
                                } else {
                                    do_query.addFacetField(str);
                                }
                                //do_query.setParam("facet.method", "enum");
                            }
                            //q.setFacetSort(false); 
                        } else {
                            do_query.addFacetField(facet);
                        }
                        do_query.setFacet(true);
                        do_query.setFacetMinCount(1);
                        do_query.setFacetLimit(-1);
                    }

                    log.fatal(solrquery);

                    QueryResponse rsp = null;
                    boolean do_err = false;
                    boolean do_sugg = false;
                    SolrDocumentList sdl = null;
                    String diag = "";
                    StringBuffer suggest = new StringBuffer("");

                    String content = "1";

                    SolrQuery spellq = do_query;
                    try {
                        rsp = server.query(do_query);
                    } catch (SolrServerException e) {
                        String header = this.SRW_HEADER.replaceAll("\\$numberOfRecords", "0");
                        out.write(header);
                        diag = this.SRW_DIAG.replaceAll("\\$error", e.getMessage());
                        do_err = true;
                        rsp = null;
                    }

                    log.fatal("query done..");
                    if (!(do_err)) { // XML dc response

                        SolrDocumentList docs = rsp.getResults();
                        numfound = (int) docs.getNumFound();
                        int count = startRecord;
                        String header = this.SRW_HEADER.replaceAll("\\$numberOfRecords",
                                Integer.toString(numfound));
                        out.write(header);
                        out.write("<srw:records>");

                        Iterator<SolrDocument> iter = rsp.getResults().iterator();

                        while (iter.hasNext()) {
                            count += 1;
                            if (recordSchema.equalsIgnoreCase("dc")) {
                                SolrDocument resultDoc = iter.next();
                                content = (String) resultDoc.getFieldValue("id");
                                out.write("<srw:record>");
                                out.write("<srw:recordPacking>xml</srw:recordPacking>");
                                out.write("<srw:recordSchema>info:srw/schema/1/dc-v1.1</srw:recordSchema>");
                                out.write(
                                        "<srw:recordData xmlns:srw_dc=\"info:srw/schema/1/dc-v1.1\" xmlns:mods=\"http://www.loc.gov/mods\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dcx=\"http://krait.kb.nl/coop/tel/handbook/telterms.html\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:marcrel=\"http://www.loc.gov/loc.terms/relators/OTH\" xmlns:facets=\"info:srw/extension/4/facets\" >");
                                StringBuffer result = new StringBuffer("");

                                construct_lucene_dc(result, resultDoc);

                                out.write(result.toString());
                                out.write("</srw:recordData>");
                                out.write("<srw:recordPosition>" + Integer.toString(count)
                                        + "</srw:recordPosition>");
                                out.write("</srw:record>");
                            }

                            if (recordSchema.equalsIgnoreCase("solr")) {
                                SolrDocument resultDoc = iter.next();
                                content = (String) resultDoc.getFieldValue("id");
                                out.write("<srw:record>");
                                out.write("<srw:recordPacking>xml</srw:recordPacking>");
                                out.write("<srw:recordSchema>info:srw/schema/1/solr</srw:recordSchema>");
                                out.write("<srw:recordData xmlns:expand=\"http://www.kbresearch.nl/expand\">");
                                StringBuffer result = new StringBuffer("");
                                construct_lucene_solr(result, resultDoc);
                                out.write(result.toString());

                                out.write("</srw:recordData>");
                                out.write("<srw:recordPosition>" + Integer.toString(count)
                                        + "</srw:recordPosition>");
                                out.write("</srw:record>");
                            }

                            if (recordSchema.equalsIgnoreCase("dcx")) { // XML dcx response
                                out.write("<srw:record>");
                                out.write("<srw:recordPacking>xml</srw:recordPacking>");
                                out.write("<srw:recordSchema>info:srw/schema/1/dc-v1.1</srw:recordSchema>");
                                out.write(
                                        "<srw:recordData><srw_dc:dc xmlns:srw_dc=\"info:srw/schema/1/dc-v1.1\" xmlns:mods=\"http://www.loc.gov/mods\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dcx=\"http://krait.kb.nl/coop/tel/handbook/telterms.html\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:marcrel=\"http://www.loc.gov/marc.relators/\" xmlns:expand=\"http://www.kbresearch.nl/expand\" xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" >");
                                SolrDocument resultDoc = iter.next();
                                content = (String) resultDoc.getFieldValue("id");

                                String dcx_data = helpers.getOAIdcx(
                                        "http://services.kb.nl/mdo/oai?verb=GetRecord&identifier=" + content,
                                        log);
                                if (x_collection.equalsIgnoreCase("ggc-thes")) {
                                    dcx_data = helpers.getOAIdcx(
                                            "http://serviceso.kb.nl/mdo/oai?verb=GetRecord&identifier="
                                                    + content,
                                            log);
                                }

                                if (!(dcx_data.length() == 0)) {
                                    out.write(dcx_data);
                                } else {
                                    // Should not do this!!

                                    out.write("<srw:record>");
                                    out.write("<srw:recordPacking>xml</srw:recordPacking>");
                                    out.write("<srw:recordSchema>info:srw/schema/1/dc-v1.1</srw:recordSchema>");
                                    out.write(
                                            "<srw:recordData xmlns:srw_dc=\"info:srw/schema/1/dc-v1.1\" xmlns:mods=\"http://www.loc.gov/mods\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dcx=\"http://krait.kb.nl/coop/tel/handbook/telterms.html\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:marcrel=\"http://www.loc.gov/loc.terms/relators/OTH\" >");
                                    StringBuffer result = new StringBuffer("");

                                    construct_lucene_dc(result, resultDoc);

                                    out.write(result.toString());
                                    out.write("</srw:recordData>");
                                    out.write("<srw:recordPosition>" + Integer.toString(count)
                                            + "</srw:recordPosition>");
                                    out.write("</srw:record>");

                                }

                                out.write("</srw_dc:dc>");

                                StringBuffer expand_data;
                                boolean expand = false;

                                if (content.startsWith("GGC-THES:AC:")) {
                                    String tmp_content = "";
                                    tmp_content = content.replaceFirst("GGC-THES:AC:", "");
                                    log.fatal("calling get");
                                    expand_data = new StringBuffer(
                                            helpers.getExpand("http://www.kbresearch.nl/general/lod_new/get/"
                                                    + tmp_content + "?format=rdf", log));
                                    log.fatal("get finini");

                                    if (expand_data.toString().length() > 4) {

                                        out.write(
                                                "<srw_dc:expand xmlns:srw_dc=\"info:srw/schema/1/dc-v1.1\" xmlns:expand=\"http://www.kbresearch.nl/expand\" xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" >");
                                        out.write(expand_data.toString());
                                        expand = true;
                                    }
                                } else {
                                    expand_data = new StringBuffer(helpers
                                            .getExpand("http://www.kbresearch.nl/ANP.cgi?q=" + content, log));
                                    if (expand_data.toString().length() > 0) {
                                        if (!expand) {
                                            out.write(
                                                    "<srw_dc:expand xmlns:srw_dc=\"info:srw/schema/1/dc-v1.1\" xmlns:expand=\"http://www.kbresearch.nl/expand\" xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" >");
                                            expand = true;
                                        }
                                        out.write(expand_data.toString());
                                    }
                                }
                                if (expand) {
                                    out.write("</srw_dc:expand>");
                                }

                                out.write("</srw:recordData>");
                                out.write("<srw:recordPosition>" + Integer.toString(count)
                                        + "</srw:recordPosition>");
                                out.write("</srw:record>");
                            }
                        }
                    }

                    if ((do_err) || (numfound == 0)) {
                        log.fatal("I haz suggestions");

                        try {
                            spellq.setParam("spellcheck", true);
                            spellq.setQueryType("/spell");
                            server = new CommonsHttpSolrServer(url);
                            rsp = server.query(spellq);
                            sdl = rsp.getResults();
                            SpellCheckResponse spell;
                            spell = rsp.getSpellCheckResponse();
                            List<SpellCheckResponse.Suggestion> suggestions = spell.getSuggestions();
                            if (suggestions.isEmpty() == false) {
                                suggest.append("<srw:extraResponseData>");
                                suggest.append("<suggestions>");

                                for (SpellCheckResponse.Suggestion sugg : suggestions) {
                                    suggest.append("<suggestionfor>" + sugg.getToken() + "</suggestionfor>");
                                    for (String item : sugg.getSuggestions()) {
                                        suggest.append("<suggestion>" + item + "</suggestion>");
                                    }
                                    suggest.append("</suggestions>");
                                    suggest.append("</srw:extraResponseData>");
                                }
                                do_sugg = true;
                            }
                        } catch (Exception e) {
                            rsp = null;
                            //log.fatal(e.toString());
                        }
                        ;
                    }
                    ;

                    if (!do_err) {
                        if (facet != null) {

                            try {
                                fct = rsp.getFacetFields();
                                out.write("<srw:facets>");

                                for (String str : facet.split(",")) {
                                    out.write("<srw:facet>");
                                    out.write("<srw:facetType>");
                                    out.write(str);
                                    out.write("</srw:facetType>");

                                    for (FacetField f : fct) {
                                        log.debug(f.getName());
                                        //if (f.getName().equals(str+"_str") || (f.getName().equals(str+"_date")) ) {
                                        List<FacetField.Count> facetEnties = f.getValues();
                                        for (FacetField.Count fcount : facetEnties) {
                                            out.write("<srw:facetValue>");
                                            out.write("<srw:valueString>");
                                            out.write(helpers.xmlEncode(fcount.getName()));
                                            out.write("</srw:valueString>");
                                            out.write("<srw:count>");
                                            out.write(Double.toString(fcount.getCount()));
                                            out.write("</srw:count>");
                                            out.write("</srw:facetValue>");
                                            //   }
                                        }

                                    }
                                    out.write("</srw:facet>");
                                }
                                out.write("</srw:facets>");
                                startRecord += 1;
                            } catch (Exception e) {
                            }

                            //log.fatal(e.toString()); }
                        }
                    } else {
                        out.write(diag);
                    }
                    out.write("</srw:records>"); // SearchRetrieve response footer
                    String footer = this.SRW_FOOTER.replaceAll("\\$query", helpers.xmlEncode(query));
                    footer = footer.replaceAll("\\$startRecord", (startRecord).toString());
                    footer = footer.replaceAll("\\$maximumRecords", maximumRecords.toString());
                    footer = footer.replaceAll("\\$recordSchema", recordSchema);
                    if (do_sugg) {
                        out.write(suggest.toString());
                    }
                    out.write(footer);
                } catch (MalformedURLException e) {
                    out.write(e.getMessage());
                } catch (IOException e) {
                    out.write("TO ERR is Human");
                }
            }
        }
    }
    out.close();
}

From source file:learning.SolrJTest.java

License:Mozilla Public License

@Test
@Ignore("it used to work because segments were there. It shouldnt depend on that.")
public void can_get_auto_complete_suggestions() throws Exception {
    add2Documents();//from   w w w. j a v a  2 s.co m
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setParam(CommonParams.QT, "/suggest");
    solrQuery.setParam(CommonParams.Q, "do");
    List<String> suggestions = suggestionsOfQuery(solrQuery);
    assertThat(suggestions.size(), is(2));
}

From source file:learning.SolrJTest.java

License:Mozilla Public License

private QueryResponse createCoreWithName(String name) throws Exception {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setParam(CommonParams.QT, "/admin/cores");
    solrQuery.setParam(CoreAdminParams.ACTION, CoreAdminParams.CoreAdminAction.CREATE.name());
    solrQuery.setParam(CoreAdminParams.NAME, name);
    solrQuery.setParam(CoreAdminParams.INSTANCE_DIR, "./" + name);
    solrQuery.setParam(CoreAdminParams.CONFIG, solrHomeRelativePath + solrConfigHomeRelativePath);
    solrQuery.setParam(CoreAdminParams.SCHEMA, solrHomeRelativePath + solrSchemaHomeRelativePath);
    solrQuery.setParam(CoreAdminParams.DATA_DIR, ".");
    return solrServer.query(solrQuery);
}