List of usage examples for org.apache.solr.common.params MoreLikeThisParams MLT
String MLT
To view the source code for org.apache.solr.common.params MoreLikeThisParams MLT.
Click Source Link
From source file:org.dspace.discovery.SolrServiceImpl.java
License:BSD License
@Override public List<Item> getRelatedItems(Context context, Item item, DiscoveryMoreLikeThisConfiguration mltConfig) { List<Item> results = new ArrayList<Item>(); try {/* w ww . j av a2 s . c o m*/ SolrQuery solrQuery = new SolrQuery(); //Set the query to handle since this is unique solrQuery.setQuery("handle: " + item.getHandle()); //Add the more like this parameters ! solrQuery.setParam(MoreLikeThisParams.MLT, true); //Add a comma separated list of the similar fields @SuppressWarnings("unchecked") java.util.Collection<String> similarityMetadataFields = CollectionUtils .collect(mltConfig.getSimilarityMetadataFields(), new Transformer() { @Override public Object transform(Object input) { //Add the mlt appendix ! return input + "_mlt"; } }); solrQuery.setParam(MoreLikeThisParams.SIMILARITY_FIELDS, StringUtils.join(similarityMetadataFields, ',')); solrQuery.setParam(MoreLikeThisParams.MIN_TERM_FREQ, String.valueOf(mltConfig.getMinTermFrequency())); solrQuery.setParam(MoreLikeThisParams.DOC_COUNT, String.valueOf(mltConfig.getMax())); solrQuery.setParam(MoreLikeThisParams.MIN_WORD_LEN, String.valueOf(mltConfig.getMinWordLength())); if (getSolr() == null) { return Collections.emptyList(); } QueryResponse rsp = getSolr().query(solrQuery); NamedList mltResults = (NamedList) rsp.getResponse().get("moreLikeThis"); if (mltResults != null && mltResults.get(item.getType() + "-" + item.getID()) != null) { SolrDocumentList relatedDocs = (SolrDocumentList) mltResults .get(item.getType() + "-" + item.getID()); for (Object relatedDoc : relatedDocs) { SolrDocument relatedDocument = (SolrDocument) relatedDoc; DSpaceObject relatedItem = findDSpaceObject(context, relatedDocument); if (relatedItem.getType() == Constants.ITEM) { results.add((Item) relatedItem); } } } } catch (Exception e) { log.error(LogManager.getHeader(context, "Error while retrieving related items", "Handle: " + item.getHandle()), e); } return results; }
From source file:uk.ac.edukapp.repository.SolrConnector.java
License:Apache License
/** * Execute a MoreLikeThis query on the Solr server * /*from w w w . j ava2s . co m*/ * @param term * the match term, typically a uri: match * @param lang * the language core to search * @return more widgets like the one identified by term */ public List<Widget> moreLikeThis(String term, String lang) { try { SolrServer server = getLocalizedSolrServer(lang); SolrQuery query = new SolrQuery(); query.setQueryType("/" + MoreLikeThisParams.MLT); query.set(MoreLikeThisParams.MATCH_INCLUDE, false); query.set(MoreLikeThisParams.MIN_DOC_FREQ, 1); query.set(MoreLikeThisParams.MIN_TERM_FREQ, 1); query.set(MoreLikeThisParams.SIMILARITY_FIELDS, "title,description"); query.setQuery(term); QueryResponse rsp = server.query(query); List<Widget> widgets = rsp.getBeans(Widget.class); return widgets; } catch (Exception e) { e.printStackTrace(); } return new ArrayList<Widget>(); }