All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jaeksoft.searchlib.webservice.query.morelikethis.MoreLikeThisQuery Maven / Gradle / Ivy

Go to download

OpenSearchServer is a powerful, enterprise-class, search engine program. Using the web user interface, the crawlers (web, file, database, ...) and the REST/RESTFul API you will be able to integrate quickly and easily advanced full-text search capabilities in your application. OpenSearchServer runs on Windows and Linux/Unix/BSD.

The newest version!
/**   
 * License Agreement for OpenSearchServer
 *
 * Copyright (C) 2014 Emmanuel Keller / Jaeksoft
 * 
 * http://www.open-search-server.com
 * 
 * This file is part of OpenSearchServer.
 *
 * OpenSearchServer is free software: you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 * OpenSearchServer is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSearchServer. 
 *  If not, see .
 **/

package com.jaeksoft.searchlib.webservice.query.morelikethis;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElements;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.jaeksoft.searchlib.analysis.LanguageEnum;
import com.jaeksoft.searchlib.request.AbstractRequest;
import com.jaeksoft.searchlib.request.MoreLikeThisRequest;
import com.jaeksoft.searchlib.request.ReturnField;
import com.jaeksoft.searchlib.webservice.query.QueryAbstract;
import com.jaeksoft.searchlib.webservice.query.search.SearchQueryAbstract;
import com.jaeksoft.searchlib.webservice.query.search.SearchQueryAbstract.Filter;
import com.jaeksoft.searchlib.webservice.query.search.SearchQueryAbstract.GeoFilter;
import com.jaeksoft.searchlib.webservice.query.search.SearchQueryAbstract.QueryFilter;
import com.jaeksoft.searchlib.webservice.query.search.SearchQueryAbstract.RelativeDateFilter;
import com.jaeksoft.searchlib.webservice.query.search.SearchQueryAbstract.TermFilter;

@XmlAccessorType(XmlAccessType.FIELD)
@JsonInclude(Include.NON_NULL)
public class MoreLikeThisQuery extends QueryAbstract {

	final public String docQuery;
	final public String likeText;
	final public LanguageEnum lang;
	final public String analyzerName;
	final public List fields;
	final public Integer minWordLen;
	final public Integer maxWordLen;
	final public Integer minDocFreq;
	final public Integer minTermFreq;
	final public Integer maxNumTokensParsed;
	final public Integer maxQueryTerms;
	final public Boolean boost;
	final public String stopWords;
	final public List returnedFields;
	@XmlElements({
			@XmlElement(name = "QueryFilter", type = QueryFilter.class),
			@XmlElement(name = "TermFilter", type = TermFilter.class),
			@XmlElement(name = "GeoFilter", type = GeoFilter.class),
			@XmlElement(name = "RelativeDateFilter", type = RelativeDateFilter.class) })
	final public List filters;
	final public Integer start;
	final public Integer rows;

	public MoreLikeThisQuery() {
		docQuery = null;
		likeText = null;
		lang = null;
		analyzerName = null;
		fields = null;
		minWordLen = null;
		maxWordLen = null;
		minDocFreq = null;
		minTermFreq = null;
		maxNumTokensParsed = null;
		maxQueryTerms = null;
		boost = null;
		stopWords = null;
		returnedFields = null;
		filters = null;
		start = null;
		rows = null;
	}

	public MoreLikeThisQuery(MoreLikeThisRequest request) {
		docQuery = request.getDocQuery();
		likeText = request.getLikeText();
		lang = request.getLang();
		analyzerName = request.getAnalyzerName();
		fields = request.getFieldList().toNameList(new ArrayList(1));
		minWordLen = request.getMinWordLen();
		maxWordLen = request.getMaxWordLen();
		minDocFreq = request.getMinDocFreq();
		minTermFreq = request.getMinTermFreq();
		maxNumTokensParsed = request.getMaxNumTokensParsed();
		maxQueryTerms = request.getMaxQueryTerms();
		boost = request.getBoost();
		stopWords = request.getStopWords();
		returnedFields = request.getReturnFieldList().toNameList(
				new ArrayList(1));
		filters = SearchQueryAbstract.newFilterList(request.getFilterList());
		start = request.getStart();
		rows = request.getRows();
	}

	@Override
	public void apply(AbstractRequest req) {
		super.apply(req);
		MoreLikeThisRequest request = (MoreLikeThisRequest) req;
		if (docQuery != null)
			request.setDocQuery(docQuery);
		if (likeText != null)
			request.setLikeText(likeText);
		if (lang != null)
			request.setLang(lang);
		if (analyzerName != null)
			request.setAnalyzerName(analyzerName);
		if (fields != null)
			for (String field : fields)
				request.getFieldList().put(new ReturnField(field));
		if (returnedFields != null)
			for (String returnedField : returnedFields)
				request.getReturnFieldList()
						.put(new ReturnField(returnedField));
		if (minWordLen != null)
			request.setMinWordLen(minWordLen);
		if (maxWordLen != null)
			request.setMaxWordLen(maxWordLen);
		if (minDocFreq != null)
			request.setMinDocFreq(minDocFreq);
		if (minTermFreq != null)
			request.setMinTermFreq(minTermFreq);
		if (maxNumTokensParsed != null)
			request.setMaxNumTokensParsed(maxNumTokensParsed);
		if (maxQueryTerms != null)
			request.setMaxQueryTerms(maxQueryTerms);
		if (boost != null)
			request.setBoost(boost);
		if (stopWords != null)
			request.setStopWords(stopWords);
		if (filters != null)
			for (Filter filter : filters)
				request.getFilterList().add(filter.newFilter());
		if (start != null)
			request.setStart(start);
		if (rows != null)
			request.setRows(rows);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy