11,6 → 11,10 |
import pt.estgp.estgweb.utils.RoleManager; |
import pt.estgp.estgweb.utils.Dom4jUtil; |
import org.apache.log4j.Logger; |
import org.apache.lucene.queryParser.QueryParser; |
import org.apache.lucene.queryParser.ParseException; |
import org.apache.lucene.analysis.SimpleAnalyzer; |
import org.apache.lucene.analysis.Analyzer; |
import org.dom4j.Document; |
import org.dom4j.XPath; |
import org.dom4j.Element; |
53,6 → 57,19 |
|
public List<ISearchResults> searchList(String moduleInternalKey, String from, String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) |
{ |
boolean containsSpecialChars = false; |
if(from != null) |
{ |
if(!QueryLanguageChars.isValid(search)) |
return null; |
if(QueryLanguageChars.containsSpecialNotUsual(search)) |
{ |
containsSpecialChars = true; |
} |
} |
// if(searchType == SearchTypeEnum.ExactPhrase && search.indexOf("AND") < 0) |
// search = "\"" + search + "\""; |
// if(searchType == SearchTypeEnum.AllWords && search) |
// search = search.replace("(","\\(").replace(")","\\)").replace("[","\\[").replace("]","\\]").replace("{","\\{").replace("}","\\}").replace(":","\\:").replace("^","\\^"); |
List<ISearchResults> searchResults = new ArrayList<ISearchResults>(); |
|
74,6 → 91,7 |
sruSources.add(sruSource); |
} |
|
|
//filtering the admited sources |
admitedSources = new ArrayList<SruSourceView>(); |
for(SruSource source: sruSources) |
114,7 → 132,10 |
} |
String finalQuery = "(" + collectionQuery.toString() + ") AND (" + search + ")"; |
logger.info("Sru server " + sruSourceView.getName() + " final query: " + finalQuery); |
String sruRequest = sruSourceView.getUrl() + "?query=" + URLEncoder.encode(finalQuery,"UTF-8") + "&verb=getSRUResponseWithThisQueryPhraseBoost&startRecord=" + ((page*maxResults)+1) + "&maximumRecords=" + maxResults; |
String service = "getSRUResponseWithThisQueryPhraseBoost"; |
if(containsSpecialChars) |
service = "getSRUResponseWithThisQuery"; |
String sruRequest = sruSourceView.getUrl() + "?query=" + URLEncoder.encode(finalQuery,"UTF-8") + "&verb=" + service + "&startRecord=" + ((page*maxResults)+1) + "&maximumRecords=" + maxResults; |
URL url = new URL(sruRequest); |
Document dom = Dom4jUtil.parse(url); |
|
284,4 → 305,8 |
{ |
//To change body of implemented methods use File | Settings | File Templates. |
} |
|
|
|
|
} |