List of usage examples for org.apache.solr.common.params MoreLikeThisParams MIN_WORD_LEN
String MIN_WORD_LEN
To view the source code for org.apache.solr.common.params MoreLikeThisParams MIN_WORD_LEN.
Click Source Link
From source file:de.fhg.iais.cortex.search.Searcher.java
License:Apache License
/** * Get similar documents regarding the most relevant document specified by the query. * /*from www. j av a 2 s . co m*/ * @param query Query to get base document for similarity search * @return {@link SearchResults} */ public SearchResults<SearchResult> moreLikeThis(Query query) { MltSolrQueryBuilder mltQueryBuilder = this.queryBuilderFactory.newMltQueryBuilder(query.getQuery(), (query.getOffset() < 0) ? 0 : query.getOffset(), (query.getRows() < 0) ? this.mltSearchParameters.getMltRows() : query.getRows()); mltQueryBuilder .setParameter(MoreLikeThisParams.MIN_DOC_FREQ, this.mltSearchParameters.getMltMinDocFrequency()) .setParameter(MoreLikeThisParams.MIN_TERM_FREQ, this.mltSearchParameters.getMltMinTermFrequency()) .setParameter(MoreLikeThisParams.MIN_WORD_LEN, this.mltSearchParameters.getMltMinWordLength()) .setParameter(MoreLikeThisParams.MAX_WORD_LEN, this.mltSearchParameters.getMltMaxWordLength()) .setParameter(MoreLikeThisParams.BOOST, this.mltSearchParameters.isMltBoost()) .setParameter(MoreLikeThisParams.MAX_QUERY_TERMS, this.mltSearchParameters.getMltMaxQueryTerms()) .setParameter(MoreLikeThisParams.MAX_NUM_TOKENS_PARSED, this.mltSearchParameters.getMltMaxTokensParsed()) .setParameter(MoreLikeThisParams.SIMILARITY_FIELDS, Strings.isNullOrEmpty(query.getMoreLikeThisFields()) ? this.mltSearchParameters.getMltSimilarFields() : query.getMoreLikeThisFields()) .addExcludingFilterQueries(query.getExclusions()); SolrQuery solrQuery = mltQueryBuilder.build(); try { QueryResponse queryResponse = this.solrServer.query(solrQuery); return this.factory.createSearchResults(query, queryResponse, true); } catch (SolrServerException e) { throw new SearchException(e); } }
From source file:de.fhg.iais.cortex.search.SearcherTest.java
License:Apache License
@Test public void testMoreLikeThis() throws SolrServerException { this.query.setMoreLikeThisFields("affiliate_fct label"); when(this.mockMLTSearchParams.getMltMinDocFrequency()).thenReturn(100); when(this.mockMLTSearchParams.getMltMinTermFrequency()).thenReturn(4); when(this.mockMLTSearchParams.getMltMinWordLength()).thenReturn(10); when(this.mockMLTSearchParams.isMltBoost()).thenReturn(true); when(this.mockMLTSearchParams.getMltMaxQueryTerms()).thenReturn(10); when(this.mockMLTSearchParams.getMltMaxTokensParsed()).thenReturn(10); when(this.mockMLTSearchParams.getMltSimilarFields()).thenReturn(""); this.searcher.moreLikeThis(this.query); Mockito.verify(this.mockMltQueryBuilder).setParameter(MoreLikeThisParams.MIN_DOC_FREQ, 100); Mockito.verify(this.mockMltQueryBuilder).setParameter(MoreLikeThisParams.MIN_TERM_FREQ, 4); Mockito.verify(this.mockMltQueryBuilder).setParameter(MoreLikeThisParams.MIN_WORD_LEN, 10); Mockito.verify(this.mockMltQueryBuilder).setParameter(MoreLikeThisParams.MAX_QUERY_TERMS, 10); Mockito.verify(this.mockMltQueryBuilder).setParameter(MoreLikeThisParams.MAX_NUM_TOKENS_PARSED, 10); Mockito.verify(this.mockMltQueryBuilder).setParameter(MoreLikeThisParams.SIMILARITY_FIELDS, "affiliate_fct label"); Mockito.verify(this.mockMltQueryBuilder).addExcludingFilterQueries(this.query.getExclusions()); Mockito.verify(this.mockMltQueryBuilder).build(); Mockito.verify(this.serverMock).query(Matchers.any(SolrQuery.class)); Mockito.verify(this.factoryMock).createSearchResults(this.query, this.responseMock, true); }
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 {//from w ww . j a v a2s .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; }