List of usage examples for org.apache.solr.client.solrj SolrQuery setQuery
public SolrQuery setQuery(String query)
From source file:com.smartitengineering.common.dao.search.solr.SolrFreeTextSearchDao.java
License:Open Source License
@Override public SearchResult<T> detailedSearch(List<QueryParameter> parameters) { SolrQuery query = new SolrQuery(); for (QueryParameter param : parameters) { switch (param.getParameterType()) { case PARAMETER_TYPE_PROPERTY: StringLikeQueryParameter queryParameter = QueryParameterCastHelper.STRING_PARAM_HELPER.cast(param); if (queryParameter.getPropertyName().equals("q")) { String queryString = queryParameter.getValue(); query.setQuery(queryString); } else { query.add(queryParameter.getPropertyName(), queryParameter.getValue()); }//from w w w.j a v a2s . co m break; case PARAMETER_TYPE_ORDER_BY: SimpleNameValueQueryParameter<Order> parameter = QueryParameterCastHelper.SIMPLE_PARAM_HELPER .cast(param); ORDER order = parameter.getValue().equals(Order.ASC) ? ORDER.asc : ORDER.desc; query.setSortField(parameter.getPropertyName(), order); break; case PARAMETER_TYPE_MAX_RESULT: ValueOnlyQueryParameter<Integer> valParam = QueryParameterCastHelper.VALUE_PARAM_HELPER.cast(param); Integer maxRows = valParam.getValue(); query.setRows(maxRows); break; case PARAMETER_TYPE_FIRST_RESULT: ValueOnlyQueryParameter<Integer> firstParam = QueryParameterCastHelper.VALUE_PARAM_HELPER .cast(param); Integer firstResult = firstParam.getValue(); query.setStart(firstResult); break; default: throw new UnsupportedOperationException("Only property and order by query parameter is supported!"); } } query.setIncludeScore(true); final SearchResult<MultivalueMap<String, Object>> mainResult = queryDao.getResult(query); final Collection<MultivalueMap<String, Object>> result = mainResult.getResult(); final Collection<T> convertedResult = adapter .convertInversely(result.toArray(new MultivalueMap[result.size()])); Iterator<T> resultItr = convertedResult.iterator(); while (resultItr.hasNext()) { T next = resultItr.next(); if (next == null) { resultItr.remove(); } } final SearchResult<T> actualResult = new SearchResult<T>(convertedResult, mainResult); return actualResult; }
From source file:com.ssavr.solr.service.impl.IceCreamLocalServiceImpl.java
License:Open Source License
/*************************************************************************** ************************** GET ******************************************** ***************************************************************************/ public IceCreamBean getIceCreamBean(IceCream iceCream) throws Exception { String uid = "iceCream_" + iceCream.getUuid(); IceCreamBean bean = new IceCreamBean(); bean.setUid(uid);/*ww w . j ava 2s.com*/ bean.setCompanyId(iceCream.getCompanyId()); bean.setIceCreamId(iceCream.getIceCreamId()); bean.setName(iceCream.getName()); bean.setFlavor(iceCream.getFlavor()); List<IceCreamDocuments> documents = iceCreamDocumentsLocalService .getIceCreamDocumentsByIceCreamId(iceCream.getIceCreamId()); List<String> documentsContent = new ArrayList<String>(); if (!documents.isEmpty()) { List<String> documentIds = new ArrayList<String>(); for (IceCreamDocuments document : documents) { documentIds.add(String.valueOf(document.getDocumentId())); } String documentsStr = StringUtil.merge(documentIds, StringPool.SPACE); SolrQuery query = new SolrQuery(); query.setQuery(Field.ENTRY_CLASS_PK + ":(" + documentsStr + ")"); query.addFilterQuery( Field.ENTRY_CLASS_NAME + ":(com.liferay.portlet.documentlibrary.model.DLFileEntry)"); query.setStart(0); query.setRows(10000000); String activeServerUrl = SolrUtil.getActiveSolrServer(); CommonsHttpSolrServer server = new CommonsHttpSolrServer(activeServerUrl); QueryResponse qr = server.query(query); SolrDocumentList docs = qr.getResults(); if (_log.isDebugEnabled()) { _log.debug("Found " + docs.size() + " Document(-s)"); } for (int i = 0; i < docs.size(); ++i) { String docContent = (String) docs.get(i).getFieldValue("content"); documentsContent.add(docContent); } } bean.setIceCreamRecipeContent(documentsContent); if (_log.isDebugEnabled()) { _log.debug(bean.toString()); } return bean; }
From source file:com.ssavr.solr.service.impl.IceCreamLocalServiceImpl.java
License:Open Source License
public List<FacetField> getIceCreamsFacets() throws SystemException { List<FacetField> facets = new ArrayList<FacetField>(); String activeServerURL = SolrUtil.getActiveSolrServer(); try {/* w w w .j av a 2 s .c om*/ CommonsHttpSolrServer server = new CommonsHttpSolrServer(activeServerURL); SolrQuery query = new SolrQuery(); query.setQuery(getQuery()); boolean enableFacet = true; query.setFacet(enableFacet); query.addFacetField("iceCreamName", "iceCreamFlavor"); QueryResponse response = server.query(query); facets = response.getFacetFields(); } catch (MalformedURLException e) { if (_log.isDebugEnabled()) { _log.debug(e.getMessage()); } throw new SystemException(e); } catch (SolrServerException e) { if (_log.isDebugEnabled()) { _log.debug(e.getMessage()); } throw new SystemException(e); } catch (HTTPException e) { if (_log.isDebugEnabled()) { _log.debug(e.getMessage()); } throw new SystemException(e); } return facets; }
From source file:com.ssavr.solr.service.impl.IceCreamLocalServiceImpl.java
License:Open Source License
public List<IceCream> facetIceCreams(String facetValue) throws SystemException { if (_log.isDebugEnabled()) { _log.debug("facetIceCreams()"); }/*from w ww . j a va 2 s . co m*/ List<IceCream> iceCreams = new ArrayList<IceCream>(); String activeServerURL = SolrUtil.getActiveSolrServer(); try { CommonsHttpSolrServer server = new CommonsHttpSolrServer(activeServerURL); SolrQuery query = new SolrQuery(); query.setQuery("*:*"); query.setFacet(true); query.addFacetQuery("iceCreamName:" + facetValue); QueryResponse response = server.query(query); List<SolrResponse> searchResults = response.getBeans(SolrResponse.class); for (SolrResponse result : searchResults) { String iceCreamId = result.getEntryClassPK(); IceCream iceCream = iceCreamPersistence.findByPrimaryKey(Long.parseLong(iceCreamId)); iceCreams.add(iceCream); } } catch (MalformedURLException e) { if (_log.isDebugEnabled()) { _log.debug(e.getMessage()); } throw new SystemException(e); } catch (SolrServerException e) { if (_log.isDebugEnabled()) { _log.debug(e.getMessage()); } throw new SystemException(e); } catch (NoSuchIceCreamException e) { if (_log.isDebugEnabled()) { _log.debug(e.getMessage()); } throw new SystemException(e); } catch (NumberFormatException e) { if (_log.isDebugEnabled()) { _log.debug(e.getMessage()); } throw new SystemException(e); } return iceCreams; }
From source file:com.ssavr.solr.service.impl.IceCreamLocalServiceImpl.java
License:Open Source License
public List<IceCream> searchIceCreams(String name, String flavor, String text, int start, int rows, String orderByCol, String orderByType) throws PortalException, SystemException { if (_log.isDebugEnabled()) { _log.debug("searchIceCreams()"); }//from w ww . j a v a 2 s . co m List<IceCream> iceCreams = new ArrayList<IceCream>(); String activeServerURL = SolrUtil.getActiveSolrServer(); try { CommonsHttpSolrServer server = new CommonsHttpSolrServer(activeServerURL); SolrQuery query = new SolrQuery(); query.setQuery(getQuery()); List<String> filterQueries = getFilterQueries(name, flavor, text); for (String fq : filterQueries) { query.setFilterQueries(fq); } query.setStart(start); query.setRows(rows); QueryResponse response = server.query(query); List<SolrResponse> searchResults = response.getBeans(SolrResponse.class); for (SolrResponse result : searchResults) { String iceCreamId = result.getEntryClassPK(); IceCream iceCream = iceCreamPersistence.findByPrimaryKey(Long.parseLong(iceCreamId)); iceCreams.add(iceCream); } } catch (MalformedURLException e) { if (_log.isDebugEnabled()) { _log.debug(e.getMessage()); } throw new SystemException(e); } catch (SolrServerException e) { if (_log.isDebugEnabled()) { _log.debug(e.getMessage()); } throw new SystemException(e); } return iceCreams; }
From source file:com.ssavr.solr.service.impl.IceCreamLocalServiceImpl.java
License:Open Source License
public List<IceCream> searchIceCreamsWithEDisMax(String name, String flavor, String text, String value, int start, int rows, String orderByCol, String orderByType) throws PortalException, SystemException { if (_log.isDebugEnabled()) { _log.debug("searchIceCreams()"); }/* w w w . j a v a2 s. co m*/ List<IceCream> iceCreams = new ArrayList<IceCream>(); String activeServerURL = SolrUtil.getActiveSolrServer(); try { CommonsHttpSolrServer server = new CommonsHttpSolrServer(activeServerURL); SolrQuery query = new SolrQuery(); query.setQuery(getQuery(value)); query.set("qf", "iceCreamName iceCreamFlavor"); /* * List<String> filterQueries = getFilterQueries(name, flavor, * text); for (String fq : filterQueries) { * query.setFilterQueries(fq); } */ query.setStart(start); query.setRows(rows); boolean enableFacet = true; query.setFacet(enableFacet); query.addFacetField("iceCreamName", "iceCreamFlavor"); QueryResponse response = server.query(query); List<SolrResponse> searchResults = response.getBeans(SolrResponse.class); for (SolrResponse result : searchResults) { String iceCreamId = result.getEntryClassPK(); IceCream iceCream = iceCreamPersistence.findByPrimaryKey(Long.parseLong(iceCreamId)); iceCreams.add(iceCream); } } catch (MalformedURLException e) { if (_log.isDebugEnabled()) { _log.debug(e.getMessage()); } throw new SystemException(e); } catch (SolrServerException e) { if (_log.isDebugEnabled()) { _log.debug(e.getMessage()); } throw new SystemException(e); } return iceCreams; }
From source file:com.staticvillage.recommender.indexer.SolrIndexer.java
License:Apache License
@Override public List<Place> getBeans() throws IndexerException { SolrQuery query = new SolrQuery(); query.setQuery("*:*"); //query.// w w w . j a v a 2 s.com try { QueryResponse rsp = solr.query(query); return rsp.getBeans(Place.class); } catch (SolrServerException e) { throw new IndexerException(e.getMessage()); } }
From source file:com.tamingtext.solr.SolrJTest.java
License:Apache License
public void doTest() throws IOException, SolrServerException { log.info("--------------------test()---------------------"); String description = "In a stunning defeat for rabbits " + "everywhere, Fred Q. Tortoise capitalized on John " + "Hare's brazen laziness to win the annual Tortoise-Hare 5K Road Race. " + "The lazy Mr. Hare, in hopes of saving face, immediately " + "acccused Mr. Tortoise of doping, in what has become an " + "all too familiar scene in sporting events today. " + "Fans everywhere were appalled by the revelations, with " + "allegiances falling roughly along species lines."; //<start id="solrj"/> SolrServer solr = new CommonsHttpSolrServer(new URL("http://localhost:" + port + "/solr"));//<co id="co.solrj.server"/> SolrInputDocument doc = new SolrInputDocument(); doc.addField("id", "http://tortoisehare5k.tamingtext.com");//<co id="co.solrj.unique"/> doc.addField("mimeType", "text/plain"); doc.addField("title", "Tortoise beats Hare! Hare wants rematch.", 5);//<co id="co.solrj.title"/> Date now = new Date(); doc.addField("date", DateUtil.getThreadLocalDateFormat().format(now));//<co id="co.solrj.date"/> doc.addField("description", description); doc.addField("categories_t", "Fairy Tale, Sports");//<co id="co.solrj.dynamic.field"/> solr.add(doc);//<co id="co.solrj.add"/> solr.commit();//<co id="co.solrj.commit"/> /*/* w ww.j a v a 2 s .c o m*/ <calloutlist> <callout arearefs="co.solrj.server"><para>Create a HTTP-based Solr Server connection.</para></callout> <callout arearefs="co.solrj.unique"><para>The schema used for this instance of Solr requires a unique field named "id"</para></callout> <callout arearefs="co.solrj.title"><para>Add a Title field to our document and boost it to be 5 times as important as the other fields</para></callout> <callout arearefs="co.solrj.date"><para>Dates must be formatted in a specific way for Solr.</para></callout> <callout arearefs="co.solrj.dynamic.field"><para>A dynamic field allows for the addition of unknown fields to Solr. The "_t" tells Solr this should be treated as a text field.</para></callout> <callout arearefs="co.solrj.add"><para>Send the newly created document to Solr. Solr takes care of creating a correctly formatted XML message and sending it to Solr using Apache Jakarta Commons HTTPClient.</para></callout> <callout arearefs="co.solrj.commit"><para>After you have added all your documents and wish to make them available for searching, send a commit message to Solr</para></callout> </calloutlist> */ //<end id="solrj"/> //Add some more docs doc = new SolrInputDocument();//<co id="co.solrj.doc"/> doc.addField("id", "http://redfox.tamingtext.com");//<co id="co.solrj.unique"/> doc.addField("mimeType", "text/plain");//<co id="co.solrj.mime"/> doc.addField("title", "Red Fox mocks Lazy Brown Dogs!", 5);//<co id="co.solrj.title"/> now = new Date(); doc.addField("date", DateUtil.getThreadLocalDateFormat().format(now)); doc.addField("description", "Once again, the Red Fox outshined the" + " lazy Brown Dogs to win the vaunted Tally Ho Cup, in what" + " has become an annual ritual. The lazy brown " + "dogs just don't seem to have the drive that Red Fox does." + " The lazy Brown Dogs vow to avenge their latest defeat, " + "but the group's supporters claim to have heard it all before."); doc.addField("categories_t", "Fairy Tale, Sports"); solr.add(doc);//<co id="co.solrj.add"/> doc = new SolrInputDocument();//<co id="co.solrj.doc"/> doc.addField("id", "http://maryLambs.tamingtext.com");//<co id="co.solrj.unique"/> doc.addField("mimeType", "text/plain");//<co id="co.solrj.mime"/> now = new Date(10000); doc.addField("date", DateUtil.getThreadLocalDateFormat().format(now)); doc.addField("title", "Mary's Little Lamb Stolen!.", 5);//<co id="co.solrj.title"/> doc.addField("description", "In an affront to all that is good and" + " decent in this world, criminals made off with Mary's " + "little Lamb in a late night raid on Mary's farm." + " Early suspects include a Ms. Bo Peep who weeks earlier " + "reported losing several sheep. Police suspect Ms. Peep " + "was going to use the lamb to bring her flock's numbers back up." + " The spokesman for Ms. Peep declined comment at this " + "time. Mary, however, was outraged and promises revenge " + "on the insensitive clod who stole her precious animals."); doc.addField("categories_t", "Fairy Tale, crime, sheep"); solr.add(doc); //add in some random other docs Collection<SolrInputDocument> docs = new HashSet<SolrInputDocument>(); for (int i = 0; i < 100; i++) { doc = new SolrInputDocument(); doc.addField("id", "http://www.tamingtext.com/" + i + ".html"); doc.addField("mimeType", "text/html"); doc.addField("title", "This is title " + i); now = new Date(150 * i + i + 20);//create some dates doc.addField("date", DateUtil.getThreadLocalDateFormat().format(now)); doc.addField("description", "This is description number: " + i + " of something that is very important."); docs.add(doc); } solr.add(docs); solr.commit(); solr.optimize(); //<start id="solrj-search-1"/> SolrQuery queryParams = new SolrQuery();//<co id="solrj-search.co.query"/> queryParams.setFields("description", "title");//<co id="solrj-search.co.fields"/> queryParams.setQuery("description:win OR description:all");//<co id="solrj-search.co.terms"/> queryParams.setRows(10); QueryResponse response = solr.query(queryParams);//<co id="solrj-search.co.process"/> assertTrue("response is null and it shouldn't be", response != null); SolrDocumentList documentList = response.getResults(); System.out.println("Docs: " + documentList); assertTrue("response.getResults() Size: " + documentList.size() + " is not: " + 3, documentList.size() == 3); /* <calloutlist> <callout arearefs="solrj-search.co.query"><para>A <classname>SolrQuery</classname> is a easy-to-use container for creating the most common types of queries.</para></callout> <callout arearefs="solrj-search.co.fields"><para>Set the names of the Fields to be returned in the documents.</para></callout> <callout arearefs="solrj-search.co.terms"><para>Set the terms to search. The "OR" is a boolean operator which allows one or the other or both to be present in the query.</para></callout> <callout arearefs="solrj-search.co.process"><para>Submit the query to Solr and get back a <classname>QueryResponse</classname> which contains the results of the search.</para></callout> </calloutlist> */ //<end id="solrj-search-1"/> //<start id="solrj-search-dismax"/> queryParams.setQuery("lazy"); queryParams.setParam("defType", "dismax");//<co id="solrj-search.co.dismax"/> queryParams.set("qf", "title^3 description^10");//<co id="sorlj-search.co.qf"/> System.out.println("Query: " + queryParams); response = solr.query(queryParams); assertTrue("response is null and it shouldn't be", response != null); documentList = response.getResults(); assertTrue("documentList Size: " + documentList.size() + " is not: " + 2, documentList.size() == 2); /* <calloutlist> <callout arearefs="solrj-search.co.dismax"><para>Tell Solr to use the <classname>DisMax</classname> Query Parser (named dismax in solrconfig.xml). </para></callout> <callout arearefs="sorlj-search.co.qf"><para>The DisMax parser will search across the fields given by the "qf" parameter and boosts the terms accordingly.</para></callout> </calloutlist> */ //<end id="solrj-search-dismax"/> //<start id="solrj-search-facets"/> queryParams = new SolrQuery(); queryParams.setQuery("description:number"); queryParams.setRows(10); queryParams.setFacet(true);//<co id="solrj-search-facets-facetOn"/> queryParams.set("facet.field", "date");//<co id="solrj-search-facets-date"/> response = solr.query(queryParams); assertTrue("response is null and it shouldn't be", response != null); System.out.println("Query: " + queryParams); documentList = response.getResults(); assertTrue("documentList Size: " + documentList.size() + " is not: " + 10, documentList.size() == 10); System.out.println("Facet Response: " + response.getResponse());//<co id="solrj-search-facets-print"/> /* <calloutlist> <callout arearefs="solrj-search-facets-facetOn"><para>Turn on faceting for this query</para></callout> <callout arearefs="solrj-search-facets-date"><para>Specify the Field to facet on</para></callout> <callout arearefs="solrj-search-facets-print"><para>Print out the facet information</para></callout> </calloutlist> */ //<end id="solrj-search-facets"/> //<start id="solrj-search-more-like-this"/> queryParams = new SolrQuery(); queryParams.setQueryType("/mlt");//<co id="solrj-search.co.mlt"/> queryParams.setQuery("description:number"); queryParams.set("mlt.match.offset", "0");//<co id="solrj-search.co.mlt.off"/> queryParams.setRows(1); queryParams.set("mlt.fl", "description, title");//<co id="solrj-search.co.mlt.fl"/> response = solr.query(queryParams); assertTrue("response is null and it shouldn't be", response != null); SolrDocumentList results = (SolrDocumentList) response.getResponse().get("match"); assertTrue("results Size: " + results.size() + " is not: " + 1, results.size() == 1); /* <calloutlist> <callout arearefs="solrj-search.co.mlt"><para>Create a "MoreLikeThis" search to find similar documents to the specified document.</para></callout> <callout arearefs="solrj-search.co.mlt.fl"><para>Specify the field to use to generate the "MoreLikeThis" query.</para></callout> <callout arearefs="solrj-search.co.mlt.off"><para>Specify which document in the original results to use as the "similar" document. </para></callout> </calloutlist> */ //<end id="solrj-search-more-like-this"/> log.info("--------------------end test()---------------------"); }
From source file:com.temenos.interaction.commands.solr.SelectCommand.java
License:Open Source License
public Result execute(InteractionContext ctx) { MultivaluedMap<String, String> queryParams = ctx.getQueryParameters(); String entityName = ctx.getCurrentState().getEntityName(); try {/*from w ww . j a va 2s . com*/ String queryStr = queryParams.getFirst("q"); SolrQuery query = new SolrQuery(); query.setQuery(queryStr); QueryResponse rsp = solrServer.query(query); ctx.setResource(buildCollectionResource(entityName, rsp.getResults())); return Result.SUCCESS; } catch (SolrServerException e) { logger.error("An unexpected error occurred while querying Solr", e); } return Result.FAILURE; }
From source file:com.temenos.interaction.commands.solr.SolrSearchCommand.java
License:Open Source License
SolrQuery buildQuery(MultivaluedMap<String, String> queryParams) { SolrQuery query = new SolrQuery(); // Add Number of rows to fetch addNumOfRows(query, queryParams);/*from w w w.j a v a2 s .c o m*/ // Add Shards for Distributed Query support addShards(query, queryParams); // Build the query string. String queryString = buildQueryString(queryParams); if (null != queryString) { query.setQuery(queryString); } // Add the filter string (like query but does hard matching). addFilter(query, queryParams); // If returned fields have been limited by authorization set them addSelect(query, queryParams); return (query); }