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

com.jaeksoft.searchlib.result.ResultNamedEntityExtraction 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) 2012-2013 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.result;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import com.jaeksoft.searchlib.SearchLibException;
import com.jaeksoft.searchlib.render.Render;
import com.jaeksoft.searchlib.request.AbstractRequest;
import com.jaeksoft.searchlib.request.NamedEntityExtractionRequest;
import com.jaeksoft.searchlib.result.collector.DocIdInterface;
import com.jaeksoft.searchlib.schema.FieldValueOriginEnum;
import com.jaeksoft.searchlib.util.Timer;
import com.jaeksoft.searchlib.webservice.query.document.DocumentResult.Position;
import com.jaeksoft.searchlib.webservice.query.document.IndexDocumentResult;

public class ResultNamedEntityExtraction extends
		AbstractResult implements
		ResultDocumentsInterface {

	final private Map docMap;
	final private List docList;
	final private StringBuilder enrichedText;

	public ResultNamedEntityExtraction(
			final NamedEntityExtractionRequest request) {
		super(request);
		this.docMap = new TreeMap();
		this.docList = new ArrayList(0);
		this.enrichedText = new StringBuilder();
	}

	public void addFieldValue(Integer docId, String field, String value) {
		ResultDocument doc = docMap.get(docId);
		if (doc == null) {
			doc = new ResultDocument(docId);
			docMap.put(docId, doc);
			docList.add(doc);
		}
		doc.addReturnedField(FieldValueOriginEnum.ENTITY_EXTRACTION, field,
				value);
	}

	@Override
	public ResultDocument getDocument(int pos, Timer timer)
			throws SearchLibException {
		if (docList == null || pos < 0 || pos > docList.size())
			return null;
		return docList.get(pos);
	}

	@Override
	public void populate(List indexDocuments)
			throws IOException, SearchLibException {
		throw new SearchLibException("Method not available");
	}

	public void resolvePositions(String namedEntityField,
			Map> tokenMap, String text) {
		Map mapPositions = new TreeMap();
		for (ResultDocument document : docList) {
			String entity = document.getValueContent(namedEntityField, 0);
			if (entity == null)
				continue;
			List positions = tokenMap.get(entity);
			document.addPositions(positions);
			if (positions != null)
				for (Position position : positions)
					mapPositions.put(position.start, position);
		}
		int lastPos = 0;
		for (Position posDoc : mapPositions.values()) {
			if (posDoc.start > lastPos)
				enrichedText.append(text.substring(lastPos, posDoc.start));
			enrichedText.append("");
			enrichedText.append(text.substring(posDoc.start, posDoc.end));
			enrichedText.append("");
			lastPos = posDoc.end;
		}
		if (lastPos < text.length())
			enrichedText.append(text.substring(lastPos));
	}

	public String getEnrichedText() {
		return enrichedText.toString();
	}

	@Override
	public float getScore(int pos) {
		return 0;
	}

	@Override
	public Float getDistance(int pos) {
		return null;
	}

	@Override
	public int getCollapseCount(int pos) {
		return 0;
	}

	@Override
	public int getNumFound() {
		if (docList == null)
			return 0;
		return docList.size();
	}

	@Override
	protected Render getRenderXml() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	protected Render getRenderCsv() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	protected Render getRenderJson(boolean indent) {
		return null;
	}

	@Override
	public Iterator iterator() {
		return new ResultDocumentIterator(this, null);
	}

	@Override
	public int getDocumentCount() {
		return docList.size();
	}

	@Override
	public int getRequestStart() {
		return 0;
	}

	@Override
	public int getRequestRows() {
		return docList.size();
	}

	@Override
	public DocIdInterface getDocs() {
		return null;
	}

	@Override
	public float getMaxScore() {
		return 0;
	}

	@Override
	public int getCollapsedDocCount() {
		return 0;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy