view src/de/mpiwg/dwinter/fulltext/searcher/LanguageSearchers.java @ 1:5c9c31510f0c

CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an. https://it-dev.mpiwg-berlin.mpg.de/tracs/pythonOcropusTools/ticket/16
author dwinter
date Wed, 03 Nov 2010 12:26:29 +0100
parents
children
line wrap: on
line source

package de.mpiwg.dwinter.fulltext.searcher;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;

import org.apache.lucene.queryParser.ParseException;

import org.apache.lucene.search.Collector;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TopScoreDocCollector;



public class LanguageSearchers extends ArrayList<LanguageSearcher> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public LanguageSearcher getSearcherByLanguage(String lang)
	{
		LanguageSearcher search= null;
		for (LanguageSearcher searcher: this)
		{
			if (searcher.lang.equals(lang))
			{
				search = searcher;
			}

		}
		return search;
	}

	public Collector searchLanguage(Query query, String language) throws IOException {


		LanguageSearcher search = getSearcherByLanguage(language);
		if (search==null)
			return null;
		
		TopScoreDocCollector col = TopScoreDocCollector.create(LanguageSearcher.MAX_RESULTS, false);
		
		//searcher.searcher.search(query, col);
		
		search.searcher.search(query,col);
		return col;
		
	}

	public HashMap<String,Collector> searchAllLanguages(Query query) throws IOException {

		HashMap<String, Collector> ret = new HashMap<String,Collector>();

		for (LanguageSearcher searcher : this)
		{
			//System.out.println("search:"+searcher.lang);
			TopScoreDocCollector col = TopScoreDocCollector.create(LanguageSearcher.MAX_RESULTS, false);
			searcher.searcher.search(query,col);
			ret.put(searcher.lang,col);
		}
		return ret;

	}

	public HashMap<String,Collector> parseAndsearchAllLanguages(String searchString) throws IOException, ParseException {

		HashMap<String, Collector> ret = new HashMap<String,Collector>();

		for (LanguageSearcher searcher : this)
		{
				//System.out.println("XXXX:"+searcher.lang);
				//System.out.println("parseAndsearchAllLanguages:"+searchString);
				//System.out.println("parseAndsearchAllLanguages (lang):"+searcher.lang);
				
				try {
					ret.put(searcher.lang,searcher.parseAndSearch(searchString));
				} catch (RuntimeException e) {
					System.err.println("Language "+searcher.lang+" not supported for search!");
				}
				
		}
		System.out.println("parseAndSearchAllLanguages: done");
		return ret;

	}

	public HashMap<String, Collector> parseAndsearchAllLanguages(String searchString, String mdString, ArrayList<String> languages) throws ParseException, IOException {
		HashMap<String, Collector> ret = new HashMap<String,Collector>();

		for (LanguageSearcher searcher : this)
		{
				//System.out.println("XXXX:"+searcher.lang);
				//System.out.println("parseAndsearchAllLanguages:"+searchString);
				//System.out.println("parseAndsearchAllLanguages (lang):"+searcher.lang);
				if (languages!=null)
					if (!languages.contains(searcher.lang)){
						continue;
					}
				try {
					if (mdString==null)
						ret.put(searcher.lang,searcher.parseAndSearch(searchString));
					else
						ret.put(searcher.lang,searcher.parseAndSearch(searchString,mdString));
				} catch (RuntimeException e) {
					e.printStackTrace();
					System.err.println("Language "+searcher.lang+" not supported for search!");
				}
				
		}
		System.out.println("parseAndSearchAllLanguages: done");

		return ret;
		
	}
	public void close() throws IOException
	{
		for (LanguageSearcher searcher : this)
			searcher.searcher.close();
	}

// TODO:implement donatus tools	
//	public HashMap<String, HashMap<String,Collector>> parseAndsearchAndAnalyseAllLanguages(
//			String searchString) throws ParseException, IOException {
//		//HashMap<String, Collector> ret = new HashMap<String,Collector>();
//
//		HashMap<String, HashMap<String,Collector>> ret = new HashMap<String, HashMap<String,Collector>>();
//		for (LanguageSearcher searcher : this)
//				ret.put(searcher.lang,searcher.parseAndSearchAndAnalyse(searchString));
//
//			
//		return ret;
//	}


}