Example usage for org.apache.solr.common.params MoreLikeThisParams SIMILARITY_FIELDS

List of usage examples for org.apache.solr.common.params MoreLikeThisParams SIMILARITY_FIELDS

Introduction

In this page you can find the example usage for org.apache.solr.common.params MoreLikeThisParams SIMILARITY_FIELDS.

Prototype

String SIMILARITY_FIELDS

To view the source code for org.apache.solr.common.params MoreLikeThisParams SIMILARITY_FIELDS.

Click Source Link

Usage

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  w w  w. j a  va2s.  c  om*/
 * @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 ww w . j  a  v  a  2 s .  c om*/
        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  a v  a2s.  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>();
}