/*
* Copyright 2013 Websquared, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.fastcatsearch.ir.query;
import java.util.HashMap;
import java.util.Map;
import org.fastcatsearch.ir.query.Term.Option;
/**
* Contains information that used when making summary result.
* */
public class HighlightInfo {
private Map<String, String> fieldIndexAnalyzerMap;
private Map<String, String> fieldQueryAnalyzerMap;
private Map<String, String> fieldQueryTermMap;
private Map<String, Integer> fieldSearchOptionMap;
public HighlightInfo() {
}
public HighlightInfo(Map<String, String> fieldIndexAnalyzerMap, Map<String, String> fieldQueryAnalyzerMap, Map<String, String> fieldQueryTermMap, Map<String, Integer> fieldSearchOptionMap) {
this.fieldIndexAnalyzerMap = fieldIndexAnalyzerMap;
this.fieldQueryAnalyzerMap = fieldQueryAnalyzerMap;
this.fieldQueryTermMap = fieldQueryTermMap;
this.fieldSearchOptionMap = fieldSearchOptionMap;
}
private void prepareMap(){
this.fieldIndexAnalyzerMap = new HashMap<String, String>();
this.fieldQueryAnalyzerMap = new HashMap<String, String>();
this.fieldQueryTermMap = new HashMap<String, String>();
this.fieldSearchOptionMap = new HashMap<String, Integer>();
}
public void add(String fieldId, String indexAnalyzerId, String queryAnalyzerId, String queryTerm, int searchOption){
if(fieldQueryTermMap == null) {
prepareMap();
}
fieldIndexAnalyzerMap.put(fieldId, indexAnalyzerId);
fieldQueryAnalyzerMap.put(fieldId, queryAnalyzerId);
String value = fieldQueryTermMap.get(fieldId);
if(value != null){
value += (" " + queryTerm);
}else{
value = queryTerm;
}
fieldQueryTermMap.put(fieldId, value);
fieldSearchOptionMap.put(fieldId, searchOption);
}
public String getQueryAnalyzerId(String fieldId){
return fieldQueryAnalyzerMap.get(fieldId);
}
public String getIndexAnalyzerId(String fieldId){
return fieldIndexAnalyzerMap.get(fieldId);
}
public String getQueryTerm(String fieldId){
return fieldQueryTermMap.get(fieldId);
}
public Map<String, String> fieldIndexAnalyzerMap(){
return fieldIndexAnalyzerMap;
}
public Map<String, String> fieldQueryAnalyzerMap(){
return fieldQueryAnalyzerMap;
}
public Map<String, String> fieldQueryTermMap(){
return fieldQueryTermMap;
}
public Map<String, Integer> fieldSearchOptionMap(){
return fieldSearchOptionMap;
}
// public boolean useHighlight(String fieldId) {
//
// if(fieldSearchOptionMap.containsKey(fieldId)) {
// return fieldSearchOptionMap.get(fieldId);
// } else {
// return false;
// }
// }
public Option getOption(String fieldId) {
if(fieldSearchOptionMap != null && fieldSearchOptionMap.containsKey(fieldId)) {
return new Option(fieldSearchOptionMap.get(fieldId));
} else {
return new Option();
}
}
}