diff --git a/src/main/java/com/jaeksoft/searchlib/analysis/filter/IndexLookupFilter.java b/src/main/java/com/jaeksoft/searchlib/analysis/filter/IndexLookupFilter.java index 69fe61ddb..67cab1c61 100644 --- a/src/main/java/com/jaeksoft/searchlib/analysis/filter/IndexLookupFilter.java +++ b/src/main/java/com/jaeksoft/searchlib/analysis/filter/IndexLookupFilter.java @@ -46,7 +46,7 @@ import com.jaeksoft.searchlib.analysis.TokenTerm; import com.jaeksoft.searchlib.function.expression.SyntaxError; import com.jaeksoft.searchlib.query.ParseException; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.result.AbstractResultSearch; import com.jaeksoft.searchlib.result.ResultDocument; import com.jaeksoft.searchlib.schema.FieldValueItem; @@ -104,7 +104,7 @@ public void setProperties(String indexName, String requestName, public TokenStream create(TokenStream tokenStream) throws SearchLibException { Client indexClient = ClientCatalog.getClient(indexName); - AbstractSearchRequest searchRequest = (AbstractSearchRequest) indexClient + AbstractLocalSearchRequest searchRequest = (AbstractLocalSearchRequest) indexClient .getNewRequest(requestName); searchRequest.setDefaultOperator("OR"); return new IndexLookupTokenFilter(tokenStream, indexClient, @@ -114,7 +114,7 @@ public TokenStream create(TokenStream tokenStream) public static class IndexLookupTokenFilter extends AbstractTermFilter { private final Client indexClient; - private final AbstractSearchRequest searchRequest; + private final AbstractLocalSearchRequest searchRequest; private final String[] returnFields; private final String requestedField; @@ -124,8 +124,8 @@ public static class IndexLookupTokenFilter extends AbstractTermFilter { private int currentQueuePos; public IndexLookupTokenFilter(TokenStream input, Client indexClient, - AbstractSearchRequest searchRequest, String requestedField, - String returnField, int batchBuffer) { + AbstractLocalSearchRequest searchRequest, + String requestedField, String returnField, int batchBuffer) { super(input); tokenQueue = new ArrayList(0); this.batchBuffer = batchBuffer; @@ -169,7 +169,7 @@ private final void searchTokens() throws SearchLibException, Occur.SHOULD); searchRequest.setBoostedComplexQuery(bq); searchRequest.setRows(collectedTokenBuffer.size()); - AbstractResultSearch result = (AbstractResultSearch) indexClient + AbstractResultSearch result = (AbstractResultSearch) indexClient .request(searchRequest); collectedTokenBuffer.clear(); if (result.getNumFound() == 0) diff --git a/src/main/java/com/jaeksoft/searchlib/autocompletion/AutoCompletionBuildThread.java b/src/main/java/com/jaeksoft/searchlib/autocompletion/AutoCompletionBuildThread.java index 0d28975b0..886d99237 100644 --- a/src/main/java/com/jaeksoft/searchlib/autocompletion/AutoCompletionBuildThread.java +++ b/src/main/java/com/jaeksoft/searchlib/autocompletion/AutoCompletionBuildThread.java @@ -144,7 +144,7 @@ private int buildSearchRequest(List buffer, int docCount) + " is not a Search request "); AbstractSearchRequest searchRequest = (AbstractSearchRequest) request; searchRequest.setRows(0); - AbstractResultSearch result = (AbstractResultSearch) sourceClient + AbstractResultSearch result = (AbstractResultSearch) sourceClient .request(request); if (result == null) return docCount; diff --git a/src/main/java/com/jaeksoft/searchlib/autocompletion/AutoCompletionItem.java b/src/main/java/com/jaeksoft/searchlib/autocompletion/AutoCompletionItem.java index a894ccf84..c44575a99 100644 --- a/src/main/java/com/jaeksoft/searchlib/autocompletion/AutoCompletionItem.java +++ b/src/main/java/com/jaeksoft/searchlib/autocompletion/AutoCompletionItem.java @@ -303,7 +303,7 @@ public int build(Integer waitForEndTimeOut, int bufferSize, } } - public AbstractResultSearch search(String query, Integer rows) + public AbstractResultSearch search(String query, Integer rows) throws SearchLibException { rwl.r.lock(); try { @@ -316,7 +316,8 @@ public AbstractResultSearch search(String query, Integer rows) query = QueryUtils.replaceControlChars(query.replace("\"", "")); searchRequest.setQueryString(query); searchRequest.setRows(rows); - return (AbstractResultSearch) autoCompClient.request(searchRequest); + return (AbstractResultSearch) autoCompClient + .request(searchRequest); } finally { rwl.r.unlock(); } diff --git a/src/main/java/com/jaeksoft/searchlib/classifier/ClassifierItem.java b/src/main/java/com/jaeksoft/searchlib/classifier/ClassifierItem.java index aa2d1cc09..ef5c0938b 100644 --- a/src/main/java/com/jaeksoft/searchlib/classifier/ClassifierItem.java +++ b/src/main/java/com/jaeksoft/searchlib/classifier/ClassifierItem.java @@ -221,7 +221,7 @@ public int query(Client client, LanguageEnum lang) throws SearchLibException { AbstractSearchRequest searchRequest = getSearchRequest(client, lang); searchRequest.setRows(0); - return ((AbstractResultSearch) client.request(searchRequest)) + return ((AbstractResultSearch) client.request(searchRequest)) .getNumFound(); } diff --git a/src/main/java/com/jaeksoft/searchlib/crawler/common/database/AbstractManager.java b/src/main/java/com/jaeksoft/searchlib/crawler/common/database/AbstractManager.java index 50cc15d2f..1c4b5db32 100644 --- a/src/main/java/com/jaeksoft/searchlib/crawler/common/database/AbstractManager.java +++ b/src/main/java/com/jaeksoft/searchlib/crawler/common/database/AbstractManager.java @@ -214,7 +214,7 @@ protected long synchronizeIndex(AbstractSearchRequest searchRequest, joinItem.setLocalField(targetField); joinItem.setOuterCollector(outerCollector); searchRequest.getJoinList().add(joinItem); - AbstractResultSearch result = (AbstractResultSearch) dbClient + AbstractResultSearch result = (AbstractResultSearch) dbClient .request(searchRequest); outerCollector.delete(); if (taskLog != null) { diff --git a/src/main/java/com/jaeksoft/searchlib/crawler/file/database/FileManager.java b/src/main/java/com/jaeksoft/searchlib/crawler/file/database/FileManager.java index 671aeaec8..70aa5f8ea 100644 --- a/src/main/java/com/jaeksoft/searchlib/crawler/file/database/FileManager.java +++ b/src/main/java/com/jaeksoft/searchlib/crawler/file/database/FileManager.java @@ -218,7 +218,7 @@ public FileInfo getFileInfo(String uriString) throws SearchLibException, searchRequest.setQueryString(sb.toString()); searchRequest.setStart(0); searchRequest.setRows(1); - AbstractResultSearch result = (AbstractResultSearch) dbClient + AbstractResultSearch result = (AbstractResultSearch) dbClient .request(searchRequest); if (result.getNumFound() == 0) return null; @@ -237,7 +237,7 @@ public void getFileInfoList(URI parentDirectory, searchRequest.setQueryString(sb.toString()); searchRequest.setStart(0); searchRequest.setRows(Integer.MAX_VALUE); - AbstractResultSearch result = (AbstractResultSearch) dbClient + AbstractResultSearch result = (AbstractResultSearch) dbClient .request(searchRequest); int l = result.getNumFound(); for (int i = 0; i < l; i++) { @@ -252,7 +252,7 @@ public long getFileList(AbstractSearchRequest searchRequest, long start, searchRequest.setStart((int) start); searchRequest.setRows((int) rows); try { - AbstractResultSearch result = (AbstractResultSearch) dbClient + AbstractResultSearch result = (AbstractResultSearch) dbClient .request(searchRequest); if (list != null) for (ResultDocument doc : result) @@ -285,7 +285,7 @@ public long getFiles(AbstractSearchRequest searchRequest, try { if (orderBy != null) orderBy.addSort(searchRequest, !orderAsc); - AbstractResultSearch result = (AbstractResultSearch) dbClient + AbstractResultSearch result = (AbstractResultSearch) dbClient .request(searchRequest); if (list != null) for (ResultDocument doc : result) diff --git a/src/main/java/com/jaeksoft/searchlib/crawler/mailbox/MailboxCrawlThread.java b/src/main/java/com/jaeksoft/searchlib/crawler/mailbox/MailboxCrawlThread.java index b468a5dc2..d64043ea6 100644 --- a/src/main/java/com/jaeksoft/searchlib/crawler/mailbox/MailboxCrawlThread.java +++ b/src/main/java/com/jaeksoft/searchlib/crawler/mailbox/MailboxCrawlThread.java @@ -274,7 +274,7 @@ public boolean isAlreadyIndexed(String messageId) throws SearchLibException { return false; uniqueSearchRequest.reset(); uniqueSearchRequest.setQueryString(value); - AbstractResultSearch result = (AbstractResultSearch) client + AbstractResultSearch result = (AbstractResultSearch) client .request(uniqueSearchRequest); return result.getNumFound() > 0; } diff --git a/src/main/java/com/jaeksoft/searchlib/crawler/web/database/UrlManager.java b/src/main/java/com/jaeksoft/searchlib/crawler/web/database/UrlManager.java index cf4d2e8ce..ee1d0cd43 100644 --- a/src/main/java/com/jaeksoft/searchlib/crawler/web/database/UrlManager.java +++ b/src/main/java/com/jaeksoft/searchlib/crawler/web/database/UrlManager.java @@ -206,7 +206,7 @@ private int getFacetLimit(ItemField field, int maxUrlPerHost, NamedItem.Selection selection, List list, Set hostSet) throws SearchLibException { - AbstractResultSearch result = (AbstractResultSearch) dbClient + AbstractResultSearch result = (AbstractResultSearch) dbClient .request(searchRequest); List facetItems = result.getFacetList() .getByField(field.getName()).getList(); @@ -316,7 +316,7 @@ public void getUrlToFetch(NamedItem host, long urlLimit, throw new SearchLibException(e); } searchRequest.setRows((int) urlLimit); - AbstractResultSearch result = (AbstractResultSearch) dbClient + AbstractResultSearch result = (AbstractResultSearch) dbClient .request(searchRequest); for (ResultDocument item : result) urlList.add(getNewUrlItem(item)); @@ -346,7 +346,7 @@ public int countBackLinks(String url) throws SearchLibException { searchRequest, ParserStatus.PARSED.value, false, false); searchRequest.setQueryString(sb.toString()); searchRequest.setRows(0); - AbstractResultSearch result = (AbstractResultSearch) dbClient + AbstractResultSearch result = (AbstractResultSearch) dbClient .request(searchRequest); return result.getNumFound(); } catch (ParseException e) { @@ -508,7 +508,7 @@ private UrlItem getUrl(AbstractSearchRequest request, String sUrl) request.setStart(0); request.setRows(1); try { - AbstractResultSearch result = (AbstractResultSearch) dbClient + AbstractResultSearch result = (AbstractResultSearch) dbClient .request(request); for (ResultDocument doc : result) return getNewUrlItem(doc); @@ -524,7 +524,7 @@ public long getUrlList(AbstractSearchRequest searchRequest, long start, searchRequest.setStart((int) start); searchRequest.setRows((int) rows); try { - AbstractResultSearch result = (AbstractResultSearch) dbClient + AbstractResultSearch result = (AbstractResultSearch) dbClient .request(searchRequest); if (list != null) for (ResultDocument doc : result) @@ -545,7 +545,7 @@ public Facet getHostFacetList(int minCount) throws SearchLibException { if (minCount < 0) minCount = 0; facetField.setMinCount(minCount); - AbstractResultSearch result = (AbstractResultSearch) dbClient + AbstractResultSearch result = (AbstractResultSearch) dbClient .request(searchRequest); if (result == null) return null; diff --git a/src/main/java/com/jaeksoft/searchlib/filter/AuthFilter.java b/src/main/java/com/jaeksoft/searchlib/filter/AuthFilter.java index 602a4fae4..286b4386e 100644 --- a/src/main/java/com/jaeksoft/searchlib/filter/AuthFilter.java +++ b/src/main/java/com/jaeksoft/searchlib/filter/AuthFilter.java @@ -39,6 +39,7 @@ import com.jaeksoft.searchlib.SearchLibException; import com.jaeksoft.searchlib.authentication.AuthManager; import com.jaeksoft.searchlib.query.ParseException; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.request.AbstractSearchRequest; import com.jaeksoft.searchlib.schema.SchemaField; import com.jaeksoft.searchlib.util.Timer; @@ -65,7 +66,7 @@ public void writeXmlConfig(XmlWriter xmlWriter) throws SAXException { @Override final public String getCacheKey(SchemaField defaultField, - Analyzer analyzer, AbstractSearchRequest request) + Analyzer analyzer, AbstractLocalSearchRequest request) throws ParseException { StringBuilder sb = new StringBuilder(getDescription()); sb.append(" - "); @@ -134,7 +135,7 @@ private Query getQuery(AbstractSearchRequest request, AuthManager auth) @Override public FilterHits getFilterHits(SchemaField defaultField, - Analyzer analyzer, AbstractSearchRequest request, Timer timer) + Analyzer analyzer, AbstractLocalSearchRequest request, Timer timer) throws ParseException, IOException, SearchLibException { AuthManager auth = request.getConfig().getAuthManager(); Query query = getQuery(request, auth); diff --git a/src/main/java/com/jaeksoft/searchlib/filter/FilterAbstract.java b/src/main/java/com/jaeksoft/searchlib/filter/FilterAbstract.java index b9992f89c..a77fd8e0b 100644 --- a/src/main/java/com/jaeksoft/searchlib/filter/FilterAbstract.java +++ b/src/main/java/com/jaeksoft/searchlib/filter/FilterAbstract.java @@ -35,7 +35,7 @@ import com.jaeksoft.searchlib.function.expression.SyntaxError; import com.jaeksoft.searchlib.geo.GeoParameters; import com.jaeksoft.searchlib.query.ParseException; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.request.SearchFilterRequest; import com.jaeksoft.searchlib.result.ResultSearchSingle; import com.jaeksoft.searchlib.schema.SchemaField; @@ -151,11 +151,11 @@ public String getParamPosition() { public abstract String getDescription(); public abstract String getCacheKey(SchemaField defaultField, - Analyzer analyzer, AbstractSearchRequest request) + Analyzer analyzer, AbstractLocalSearchRequest request) throws ParseException, SyntaxError, SearchLibException, IOException; public abstract FilterHits getFilterHits(SchemaField defaultField, - Analyzer analyzer, AbstractSearchRequest request, Timer timer) + Analyzer analyzer, AbstractLocalSearchRequest request, Timer timer) throws ParseException, IOException, SearchLibException, SyntaxError; public abstract void writeXmlConfig(XmlWriter xmlWriter) diff --git a/src/main/java/com/jaeksoft/searchlib/filter/FilterListExecutor.java b/src/main/java/com/jaeksoft/searchlib/filter/FilterListExecutor.java index 4f9d1f58c..322ccca61 100644 --- a/src/main/java/com/jaeksoft/searchlib/filter/FilterListExecutor.java +++ b/src/main/java/com/jaeksoft/searchlib/filter/FilterListExecutor.java @@ -33,7 +33,7 @@ import com.jaeksoft.searchlib.config.Config; import com.jaeksoft.searchlib.function.expression.SyntaxError; import com.jaeksoft.searchlib.query.ParseException; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.schema.Schema; import com.jaeksoft.searchlib.schema.SchemaField; import com.jaeksoft.searchlib.util.ExceptionUtils; @@ -47,14 +47,15 @@ public class FilterListExecutor { private final ThreadGroup threadGroup; private final SchemaField defaultField; private final PerFieldAnalyzer analyzer; - private final AbstractSearchRequest request; + private final AbstractLocalSearchRequest request; private final OperatorEnum defaultOperator; private final Timer timer; private final FilterHits finalFilterHits; private final List threads; - public FilterListExecutor(AbstractSearchRequest searchRequest, Timer timer) - throws SearchLibException, ParseException, IOException, SyntaxError { + public FilterListExecutor(AbstractLocalSearchRequest searchRequest, + Timer timer) throws SearchLibException, ParseException, + IOException, SyntaxError { Config config = searchRequest.getConfig(); Schema schema = config.getSchema(); defaultField = schema.getFieldList().getDefaultField(); diff --git a/src/main/java/com/jaeksoft/searchlib/filter/GeoFilter.java b/src/main/java/com/jaeksoft/searchlib/filter/GeoFilter.java index e049fd09d..ad82d4807 100644 --- a/src/main/java/com/jaeksoft/searchlib/filter/GeoFilter.java +++ b/src/main/java/com/jaeksoft/searchlib/filter/GeoFilter.java @@ -41,7 +41,7 @@ import com.jaeksoft.searchlib.analysis.filter.DegreesRadiansFilter; import com.jaeksoft.searchlib.geo.GeoParameters; import com.jaeksoft.searchlib.query.ParseException; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.result.ResultSearchSingle; import com.jaeksoft.searchlib.result.collector.DistanceInterface; import com.jaeksoft.searchlib.result.collector.DocIdInterface; @@ -215,7 +215,7 @@ public void writeXmlConfig(XmlWriter xmlWriter) throws SAXException { @Override public String getCacheKey(SchemaField defaultField, Analyzer analyzer, - AbstractSearchRequest request) throws ParseException { + AbstractLocalSearchRequest request) throws ParseException { StringBuilder sb = new StringBuilder("GeoFilter - "); sb.append(getQuery(request.getGeoParameters()).toString()); sb.append(" - "); @@ -284,8 +284,8 @@ public static void main(String[] args) { @Override public FilterHits getFilterHits(SchemaField defaultField, - Analyzer analyzer, AbstractSearchRequest searchRequest, Timer timer) - throws ParseException, IOException, SearchLibException { + Analyzer analyzer, AbstractLocalSearchRequest searchRequest, + Timer timer) throws ParseException, IOException, SearchLibException { GeoParameters geoParams = searchRequest.getGeoParameters(); Query query = getQuery(geoParams); ResultSearchSingle result = getResult(searchRequest.getConfig(), query, diff --git a/src/main/java/com/jaeksoft/searchlib/filter/MirrorAndFilter.java b/src/main/java/com/jaeksoft/searchlib/filter/MirrorAndFilter.java index d5aa1339c..783f66dcf 100644 --- a/src/main/java/com/jaeksoft/searchlib/filter/MirrorAndFilter.java +++ b/src/main/java/com/jaeksoft/searchlib/filter/MirrorAndFilter.java @@ -34,7 +34,7 @@ import com.jaeksoft.searchlib.SearchLibException; import com.jaeksoft.searchlib.function.expression.SyntaxError; import com.jaeksoft.searchlib.query.ParseException; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.schema.SchemaField; import com.jaeksoft.searchlib.util.Timer; import com.jaeksoft.searchlib.util.XPathParser; @@ -74,19 +74,19 @@ public void writeXmlConfig(XmlWriter xmlWriter) throws SAXException { @Override public String getCacheKey(SchemaField defaultField, Analyzer analyzer, - AbstractSearchRequest request) throws ParseException, SyntaxError, - SearchLibException, IOException { + AbstractLocalSearchRequest request) throws ParseException, + SyntaxError, SearchLibException, IOException { StringBuilder sb = new StringBuilder("MirrorAndFilter - "); sb.append(getQuery(request).toString()); return sb.toString(); } - private Query getQuery(AbstractSearchRequest request) + private Query getQuery(AbstractLocalSearchRequest request) throws ParseException, SyntaxError, SearchLibException, IOException { if (query != null) return query; try { - request = (AbstractSearchRequest) request.duplicate(); + request = (AbstractLocalSearchRequest) request.duplicate(); request.setDefaultOperator(OperatorEnum.AND); query = request.getNotBoostedQuery(); return query; @@ -99,7 +99,7 @@ private Query getQuery(AbstractSearchRequest request) @Override public FilterHits getFilterHits(SchemaField defaultField, - Analyzer analyzer, AbstractSearchRequest request, Timer timer) + Analyzer analyzer, AbstractLocalSearchRequest request, Timer timer) throws ParseException, IOException, SearchLibException, SyntaxError { Query query = getQuery(request); return new FilterHits( diff --git a/src/main/java/com/jaeksoft/searchlib/filter/QueryFilter.java b/src/main/java/com/jaeksoft/searchlib/filter/QueryFilter.java index 952a51d2e..258d00f7d 100644 --- a/src/main/java/com/jaeksoft/searchlib/filter/QueryFilter.java +++ b/src/main/java/com/jaeksoft/searchlib/filter/QueryFilter.java @@ -37,7 +37,7 @@ import com.jaeksoft.searchlib.SearchLibException; import com.jaeksoft.searchlib.query.ParseException; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.schema.SchemaField; import com.jaeksoft.searchlib.util.StringUtils; import com.jaeksoft.searchlib.util.Timer; @@ -102,7 +102,7 @@ public String getDescription() { @Override public String getCacheKey(SchemaField defaultField, Analyzer analyzer, - AbstractSearchRequest request) throws ParseException { + AbstractLocalSearchRequest request) throws ParseException { return "QueryFilter - " + getQuery(defaultField, analyzer).toString(); } @@ -116,7 +116,7 @@ public void writeXmlConfig(XmlWriter xmlWriter) throws SAXException { @Override public FilterHits getFilterHits(SchemaField defaultField, - Analyzer analyzer, AbstractSearchRequest request, Timer timer) + Analyzer analyzer, AbstractLocalSearchRequest request, Timer timer) throws ParseException, IOException, SearchLibException { Query query = getQuery(defaultField, analyzer); return new FilterHits( diff --git a/src/main/java/com/jaeksoft/searchlib/filter/RelativeDateFilter.java b/src/main/java/com/jaeksoft/searchlib/filter/RelativeDateFilter.java index dfea91db3..38a5c7a58 100644 --- a/src/main/java/com/jaeksoft/searchlib/filter/RelativeDateFilter.java +++ b/src/main/java/com/jaeksoft/searchlib/filter/RelativeDateFilter.java @@ -39,7 +39,7 @@ import com.jaeksoft.searchlib.SearchLibException; import com.jaeksoft.searchlib.crawler.common.database.TimeInterval; import com.jaeksoft.searchlib.query.ParseException; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.schema.SchemaField; import com.jaeksoft.searchlib.util.DomUtils; import com.jaeksoft.searchlib.util.Timer; @@ -139,7 +139,7 @@ public String getDescription() { @Override public String getCacheKey(SchemaField defaultField, Analyzer analyzer, - AbstractSearchRequest request) throws ParseException { + AbstractLocalSearchRequest request) throws ParseException { return "QueryFilter - " + getQuery(defaultField, analyzer).toString(); } @@ -153,7 +153,7 @@ public void writeXmlConfig(XmlWriter xmlWriter) throws SAXException { @Override public FilterHits getFilterHits(SchemaField defaultField, - Analyzer analyzer, AbstractSearchRequest request, Timer timer) + Analyzer analyzer, AbstractLocalSearchRequest request, Timer timer) throws ParseException, IOException, SearchLibException { Query query = getQuery(defaultField, analyzer); return new FilterHits( diff --git a/src/main/java/com/jaeksoft/searchlib/filter/RequestTemplateFilter.java b/src/main/java/com/jaeksoft/searchlib/filter/RequestTemplateFilter.java index 7e1579083..4788e8902 100644 --- a/src/main/java/com/jaeksoft/searchlib/filter/RequestTemplateFilter.java +++ b/src/main/java/com/jaeksoft/searchlib/filter/RequestTemplateFilter.java @@ -35,6 +35,7 @@ import com.jaeksoft.searchlib.SearchLibException; import com.jaeksoft.searchlib.config.Config; import com.jaeksoft.searchlib.query.ParseException; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.request.AbstractRequest; import com.jaeksoft.searchlib.request.AbstractSearchRequest; import com.jaeksoft.searchlib.result.ResultSearchSingle; @@ -81,7 +82,7 @@ public String getDescription() { @Override public String getCacheKey(SchemaField defaultField, Analyzer analyzer, - AbstractSearchRequest request) throws ParseException { + AbstractLocalSearchRequest request) throws ParseException { return StringUtils.fastConcat("TemplateFilter - ", requestName, queryString); } @@ -96,7 +97,7 @@ public void writeXmlConfig(XmlWriter xmlWriter) throws SAXException { @Override public FilterHits getFilterHits(SchemaField defaultField, - Analyzer analyzer, AbstractSearchRequest request, Timer timer) + Analyzer analyzer, AbstractLocalSearchRequest request, Timer timer) throws ParseException, IOException, SearchLibException { Config config = request.getConfig(); AbstractRequest filterRequest = config.getNewRequest(requestName); diff --git a/src/main/java/com/jaeksoft/searchlib/filter/TermFilter.java b/src/main/java/com/jaeksoft/searchlib/filter/TermFilter.java index 55bfd071c..cb27762a1 100644 --- a/src/main/java/com/jaeksoft/searchlib/filter/TermFilter.java +++ b/src/main/java/com/jaeksoft/searchlib/filter/TermFilter.java @@ -37,7 +37,7 @@ import com.jaeksoft.searchlib.SearchLibException; import com.jaeksoft.searchlib.query.ParseException; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.schema.SchemaField; import com.jaeksoft.searchlib.util.DomUtils; import com.jaeksoft.searchlib.util.StringUtils; @@ -105,7 +105,7 @@ public String getDescription() { @Override public String getCacheKey(SchemaField defaultField, Analyzer analyzer, - AbstractSearchRequest request) throws ParseException { + AbstractLocalSearchRequest request) throws ParseException { return "QueryFilter - " + getQuery().toString(); } @@ -119,7 +119,7 @@ public void writeXmlConfig(XmlWriter xmlWriter) throws SAXException { @Override public FilterHits getFilterHits(SchemaField defaultField, - Analyzer analyzer, AbstractSearchRequest request, Timer timer) + Analyzer analyzer, AbstractLocalSearchRequest request, Timer timer) throws ParseException, IOException, SearchLibException { Query query = getQuery(); return new FilterHits( diff --git a/src/main/java/com/jaeksoft/searchlib/index/IndexSingle.java b/src/main/java/com/jaeksoft/searchlib/index/IndexSingle.java index 63ca3788a..88a6beb9a 100644 --- a/src/main/java/com/jaeksoft/searchlib/index/IndexSingle.java +++ b/src/main/java/com/jaeksoft/searchlib/index/IndexSingle.java @@ -50,8 +50,8 @@ import com.jaeksoft.searchlib.filter.FilterHits; import com.jaeksoft.searchlib.function.expression.SyntaxError; import com.jaeksoft.searchlib.query.ParseException; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.request.AbstractRequest; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; import com.jaeksoft.searchlib.result.AbstractResult; import com.jaeksoft.searchlib.schema.FieldValue; import com.jaeksoft.searchlib.schema.Schema; @@ -426,7 +426,7 @@ final public FieldCacheIndex getStringIndex(final String fieldName) @Override public FilterHits getFilterHits(SchemaField defaultField, - PerFieldAnalyzer analyzer, AbstractSearchRequest request, + PerFieldAnalyzer analyzer, AbstractLocalSearchRequest request, FilterAbstract filter, Timer timer) throws ParseException, IOException, SearchLibException, SyntaxError { rwl.r.lock(); @@ -442,7 +442,7 @@ public FilterHits getFilterHits(SchemaField defaultField, } @Override - public DocSetHits searchDocSet(AbstractSearchRequest searchRequest, + public DocSetHits searchDocSet(AbstractLocalSearchRequest searchRequest, Timer timer) throws IOException, ParseException, SyntaxError, SearchLibException { rwl.r.lock(); diff --git a/src/main/java/com/jaeksoft/searchlib/index/ReaderAbstract.java b/src/main/java/com/jaeksoft/searchlib/index/ReaderAbstract.java index f9bdd8445..e23567dcc 100644 --- a/src/main/java/com/jaeksoft/searchlib/index/ReaderAbstract.java +++ b/src/main/java/com/jaeksoft/searchlib/index/ReaderAbstract.java @@ -41,7 +41,7 @@ import com.jaeksoft.searchlib.index.docvalue.RadiansDocValue; import com.jaeksoft.searchlib.index.docvalue.ReverseOrderDocValue; import com.jaeksoft.searchlib.query.ParseException; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.schema.SchemaField; import com.jaeksoft.searchlib.util.Timer; @@ -64,7 +64,7 @@ public abstract FieldCacheIndex getStringIndex(String name) @Override public abstract FilterHits getFilterHits(SchemaField defaultField, - PerFieldAnalyzer analyzer, AbstractSearchRequest request, + PerFieldAnalyzer analyzer, AbstractLocalSearchRequest request, FilterAbstract filter, Timer timer) throws ParseException, IOException, SearchLibException, SyntaxError; diff --git a/src/main/java/com/jaeksoft/searchlib/index/ReaderInterface.java b/src/main/java/com/jaeksoft/searchlib/index/ReaderInterface.java index a85641660..1f1a047fb 100644 --- a/src/main/java/com/jaeksoft/searchlib/index/ReaderInterface.java +++ b/src/main/java/com/jaeksoft/searchlib/index/ReaderInterface.java @@ -43,8 +43,8 @@ import com.jaeksoft.searchlib.filter.FilterHits; import com.jaeksoft.searchlib.function.expression.SyntaxError; import com.jaeksoft.searchlib.query.ParseException; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.request.AbstractRequest; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; import com.jaeksoft.searchlib.result.AbstractResult; import com.jaeksoft.searchlib.schema.FieldValue; import com.jaeksoft.searchlib.schema.SchemaField; @@ -87,11 +87,11 @@ public String[] getDocTerms(String field) throws IOException, SearchLibException; public FilterHits getFilterHits(SchemaField defaultField, - PerFieldAnalyzer analyzer, AbstractSearchRequest request, + PerFieldAnalyzer analyzer, AbstractLocalSearchRequest request, FilterAbstract filter, Timer timer) throws ParseException, IOException, SearchLibException, SyntaxError; - public DocSetHits searchDocSet(AbstractSearchRequest searchRequest, + public DocSetHits searchDocSet(AbstractLocalSearchRequest searchRequest, Timer timer) throws IOException, ParseException, SyntaxError, SearchLibException; diff --git a/src/main/java/com/jaeksoft/searchlib/index/ReaderLocal.java b/src/main/java/com/jaeksoft/searchlib/index/ReaderLocal.java index 43b884c18..ed5b5e614 100644 --- a/src/main/java/com/jaeksoft/searchlib/index/ReaderLocal.java +++ b/src/main/java/com/jaeksoft/searchlib/index/ReaderLocal.java @@ -65,8 +65,8 @@ import com.jaeksoft.searchlib.filter.FilterListExecutor; import com.jaeksoft.searchlib.function.expression.SyntaxError; import com.jaeksoft.searchlib.query.ParseException; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.request.AbstractRequest; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; import com.jaeksoft.searchlib.result.AbstractResult; import com.jaeksoft.searchlib.schema.FieldValue; import com.jaeksoft.searchlib.schema.FieldValueItem; @@ -347,7 +347,7 @@ public void search(Query query, Filter filter, Collector collector) @Override public FilterHits getFilterHits(SchemaField defaultField, - PerFieldAnalyzer analyzer, AbstractSearchRequest request, + PerFieldAnalyzer analyzer, AbstractLocalSearchRequest request, FilterAbstract filter, Timer timer) throws ParseException, IOException, SearchLibException, SyntaxError { rwl.r.lock(); @@ -468,7 +468,7 @@ public void reload() throws SearchLibException { } @Override - public DocSetHits searchDocSet(AbstractSearchRequest searchRequest, + public DocSetHits searchDocSet(AbstractLocalSearchRequest searchRequest, Timer timer) throws IOException, ParseException, SyntaxError, SearchLibException { rwl.r.lock(); diff --git a/src/main/java/com/jaeksoft/searchlib/index/WriterLocal.java b/src/main/java/com/jaeksoft/searchlib/index/WriterLocal.java index d0429ec6b..8789f9621 100644 --- a/src/main/java/com/jaeksoft/searchlib/index/WriterLocal.java +++ b/src/main/java/com/jaeksoft/searchlib/index/WriterLocal.java @@ -53,8 +53,8 @@ import com.jaeksoft.searchlib.analysis.PerFieldAnalyzer; import com.jaeksoft.searchlib.function.expression.SyntaxError; import com.jaeksoft.searchlib.query.ParseException; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.request.AbstractRequest; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; import com.jaeksoft.searchlib.request.DocumentsRequest; import com.jaeksoft.searchlib.result.ResultDocuments; import com.jaeksoft.searchlib.schema.FieldValueItem; @@ -403,9 +403,9 @@ private int deleteDocumentsNoLock(AbstractRequest request) throws SearchLibException { try { int[] ids = null; - if (request instanceof AbstractSearchRequest) { + if (request instanceof AbstractLocalSearchRequest) { DocSetHits dsh = indexSingle.searchDocSet( - (AbstractSearchRequest) request, null); + (AbstractLocalSearchRequest) request, null); if (dsh != null) ids = dsh.getIds(); } else if (request instanceof DocumentsRequest) { diff --git a/src/main/java/com/jaeksoft/searchlib/join/JoinResult.java b/src/main/java/com/jaeksoft/searchlib/join/JoinResult.java index 3821423a1..bbde012d5 100644 --- a/src/main/java/com/jaeksoft/searchlib/join/JoinResult.java +++ b/src/main/java/com/jaeksoft/searchlib/join/JoinResult.java @@ -86,7 +86,7 @@ public void setJoinDocInterface(CollectorInterface collectorInterface) { .getCollector(JoinScoreInterface.class); } - public AbstractResultSearch getForeignResult() { + public AbstractResultSearch getForeignResult() { return foreignResult; } diff --git a/src/main/java/com/jaeksoft/searchlib/learning/StandardLearner.java b/src/main/java/com/jaeksoft/searchlib/learning/StandardLearner.java index 5c59fed44..787fbbac8 100644 --- a/src/main/java/com/jaeksoft/searchlib/learning/StandardLearner.java +++ b/src/main/java/com/jaeksoft/searchlib/learning/StandardLearner.java @@ -45,6 +45,7 @@ import com.jaeksoft.searchlib.analysis.LanguageEnum; import com.jaeksoft.searchlib.crawler.FieldMap; import com.jaeksoft.searchlib.index.IndexDocument; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.request.AbstractSearchRequest; import com.jaeksoft.searchlib.result.AbstractResultSearch; import com.jaeksoft.searchlib.result.ResultDocument; @@ -188,7 +189,7 @@ public void learn(Client client, String requestName, throws IOException, SearchLibException { if (CollectionUtils.isEmpty(sources)) return; - AbstractResultSearch result = null; + AbstractResultSearch result = null; List learnIndexDocuments = new ArrayList( sources.size()); rwl.r.lock(); @@ -207,7 +208,7 @@ public void learn(Client client, String requestName, if (StringUtils.isEmpty(uniqueTerm)) continue; request.addTermFilter(uniqueField, uniqueTerm, false); - result = (AbstractResultSearch) client.request(request); + result = (AbstractResultSearch) client.request(request); if (result.getDocumentCount() != 1) continue; addNewlearnDocument(sourceFieldMap, result, 0, @@ -272,7 +273,7 @@ public void similar(String data, FieldMap sourceFieldMap, int maxRank, if (booleanQuery == null || booleanQuery.getClauses() == null || booleanQuery.getClauses().length == 0) return; - AbstractSearchRequest searchRequest = (AbstractSearchRequest) learnerClient + AbstractLocalSearchRequest searchRequest = (AbstractLocalSearchRequest) learnerClient .getNewRequest(REQUEST_SEARCH); int start = 0; final int rows = 1000; @@ -284,7 +285,7 @@ public void similar(String data, FieldMap sourceFieldMap, int maxRank, searchRequest.setStart(start); searchRequest.setRows(rows); searchRequest.setBoostedComplexQuery(booleanQuery); - AbstractResultSearch result = (AbstractResultSearch) learnerClient + AbstractResultSearch result = (AbstractResultSearch) learnerClient .request(searchRequest); if (result.getDocumentCount() == 0) break; @@ -326,7 +327,7 @@ public void similar(String data, FieldMap sourceFieldMap, int maxRank, private void fieldClassify(String fieldName, Float boost, String data, TreeMap targetMap) throws SearchLibException, IOException { - AbstractSearchRequest searchRequest = (AbstractSearchRequest) learnerClient + AbstractLocalSearchRequest searchRequest = (AbstractLocalSearchRequest) learnerClient .getNewRequest(REQUEST_SEARCH); BooleanQuery booleanQuery = getBooleanQuery(fieldName, data); if (booleanQuery == null || booleanQuery.getClauses() == null @@ -405,7 +406,7 @@ public void classify(String data, FieldMap sourceFieldMap, int maxRank, } private void addNewlearnDocument(FieldMap sourceFieldMap, - AbstractResultSearch result, int pos, + AbstractResultSearch result, int pos, Collection learnIndexDocuments) throws IOException, SearchLibException { ResultDocument resultDocument = result.getDocument(pos); @@ -441,7 +442,7 @@ public void learn(Client client, String requestName, request.setEmptyReturnsAll(true); for (;;) { request.setStart(start); - AbstractResultSearch result = (AbstractResultSearch) client + AbstractResultSearch result = (AbstractResultSearch) client .request(request); if (result.getDocumentCount() == 0) break; @@ -467,7 +468,7 @@ public TreeMap> getCustoms(String name) AbstractSearchRequest searchRequest = (AbstractSearchRequest) learnerClient .getNewRequest(REQUEST_CUSTOM); searchRequest.setQueryString(name); - AbstractResultSearch result = (AbstractResultSearch) learnerClient + AbstractResultSearch result = (AbstractResultSearch) learnerClient .request(searchRequest); if (result.getDocumentCount() == 0) return null; diff --git a/src/main/java/com/jaeksoft/searchlib/logreport/LogReportManager.java b/src/main/java/com/jaeksoft/searchlib/logreport/LogReportManager.java index bdc4ba18c..b60526d24 100644 --- a/src/main/java/com/jaeksoft/searchlib/logreport/LogReportManager.java +++ b/src/main/java/com/jaeksoft/searchlib/logreport/LogReportManager.java @@ -132,7 +132,7 @@ final public void log(AbstractRequest request, Timer timer, sb.append(timer.getDuration()); sb.append('\u0009'); if (result != null && result instanceof AbstractResultSearch) - sb.append(((AbstractResultSearch) result).getNumFound()); + sb.append(((AbstractResultSearch) result).getNumFound()); sb.append('\u0009'); if (searchRequest != null) sb.append(searchRequest.getStart()); diff --git a/src/main/java/com/jaeksoft/searchlib/render/AbstractRenderJson.java b/src/main/java/com/jaeksoft/searchlib/render/AbstractRenderJson.java index 0cd6c823e..eb2df9cf2 100644 --- a/src/main/java/com/jaeksoft/searchlib/render/AbstractRenderJson.java +++ b/src/main/java/com/jaeksoft/searchlib/render/AbstractRenderJson.java @@ -53,7 +53,8 @@ protected void renderPrefix(JSONObject jsonResponse, String queryString) throws ParseException, SyntaxError, SearchLibException, IOException { JSONObject jsonHeader = new JSONObject(); jsonHeader.put("status", 0); - jsonHeader.put("query", queryString); + if (queryString != null) + jsonHeader.put("query", queryString); jsonResponse.put("header", jsonHeader); } diff --git a/src/main/java/com/jaeksoft/searchlib/render/AbstractRenderXml.java b/src/main/java/com/jaeksoft/searchlib/render/AbstractRenderXml.java index 083280be9..bc1b0d407 100644 --- a/src/main/java/com/jaeksoft/searchlib/render/AbstractRenderXml.java +++ b/src/main/java/com/jaeksoft/searchlib/render/AbstractRenderXml.java @@ -76,9 +76,11 @@ protected void renderPrefix(int status, String queryString) writer.print(""); writer.print(status); writer.print(""); - writer.print(""); - writer.print(StringEscapeUtils.escapeXml(queryString)); - writer.println(""); + if (queryString != null) { + writer.print(""); + writer.print(StringEscapeUtils.escapeXml(queryString)); + writer.println(""); + } writer.println(""); } diff --git a/src/main/java/com/jaeksoft/searchlib/render/RenderCSV.java b/src/main/java/com/jaeksoft/searchlib/render/RenderCSV.java index ccef1677f..94e20589b 100644 --- a/src/main/java/com/jaeksoft/searchlib/render/RenderCSV.java +++ b/src/main/java/com/jaeksoft/searchlib/render/RenderCSV.java @@ -47,10 +47,10 @@ public class RenderCSV implements Render { private PrintWriter writer; - private AbstractResultSearch result; + private AbstractResultSearch result; private AbstractSearchRequest searchRequest; - public RenderCSV(AbstractResultSearch result) { + public RenderCSV(AbstractResultSearch result) { this.result = result; this.searchRequest = result.getRequest(); diff --git a/src/main/java/com/jaeksoft/searchlib/render/RenderOpenSearch.java b/src/main/java/com/jaeksoft/searchlib/render/RenderOpenSearch.java index 66d47b987..062bbab85 100644 --- a/src/main/java/com/jaeksoft/searchlib/render/RenderOpenSearch.java +++ b/src/main/java/com/jaeksoft/searchlib/render/RenderOpenSearch.java @@ -58,13 +58,13 @@ public class RenderOpenSearch implements Render { private PrintWriter writer; - private AbstractResultSearch result; + private AbstractResultSearch result; private AbstractSearchRequest searchRequest; private Matcher controlMatcher; private String serverURL; private String outputEncoding; - public RenderOpenSearch(AbstractResultSearch result, String serverURL, + public RenderOpenSearch(AbstractResultSearch result, String serverURL, String outputEncoding) { this.result = result; this.searchRequest = result.getRequest(); diff --git a/src/main/java/com/jaeksoft/searchlib/render/RenderSearchJson.java b/src/main/java/com/jaeksoft/searchlib/render/RenderSearchJson.java index 5e9960314..7245c9951 100644 --- a/src/main/java/com/jaeksoft/searchlib/render/RenderSearchJson.java +++ b/src/main/java/com/jaeksoft/searchlib/render/RenderSearchJson.java @@ -32,16 +32,16 @@ import com.jaeksoft.searchlib.facet.FacetField; import com.jaeksoft.searchlib.facet.FacetItem; import com.jaeksoft.searchlib.facet.FacetList; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.request.AbstractSearchRequest; import com.jaeksoft.searchlib.result.AbstractResultSearch; -public class RenderSearchJson - extends - AbstractRenderDocumentsJson { +public class RenderSearchJson extends + AbstractRenderDocumentsJson> { private boolean indent; - public RenderSearchJson(AbstractResultSearch result, boolean jsonIndent) { + public RenderSearchJson(AbstractResultSearch result, boolean jsonIndent) { super(result); this.indent = jsonIndent; } @@ -80,7 +80,9 @@ private void renderFacet(Facet facet, ArrayList jsonFacetList) @Override public void render() throws Exception { JSONObject jsonResponse = new JSONObject(); - renderPrefix(jsonResponse, request.getQueryParsed()); + String queryParsed = request instanceof AbstractLocalSearchRequest ? ((AbstractLocalSearchRequest) request) + .getQueryParsed() : request.getQueryString(); + renderPrefix(jsonResponse, queryParsed); renderDocuments(jsonResponse); renderFacets(jsonResponse); JSONObject json = new JSONObject(); diff --git a/src/main/java/com/jaeksoft/searchlib/render/RenderSearchXml.java b/src/main/java/com/jaeksoft/searchlib/render/RenderSearchXml.java index 3b6ea6cd9..80e7c1b94 100644 --- a/src/main/java/com/jaeksoft/searchlib/render/RenderSearchXml.java +++ b/src/main/java/com/jaeksoft/searchlib/render/RenderSearchXml.java @@ -36,14 +36,15 @@ import com.jaeksoft.searchlib.facet.FacetList; import com.jaeksoft.searchlib.function.expression.SyntaxError; import com.jaeksoft.searchlib.query.ParseException; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.request.AbstractSearchRequest; import com.jaeksoft.searchlib.result.AbstractResultSearch; import com.jaeksoft.searchlib.result.ResultDocument; -public class RenderSearchXml extends - AbstractRenderDocumentsXml { +public class RenderSearchXml extends + AbstractRenderDocumentsXml> { - public RenderSearchXml(AbstractResultSearch result) { + public RenderSearchXml(AbstractResultSearch result) { super(result); } @@ -107,7 +108,9 @@ private void renderFacets() throws Exception { @Override public void render() throws Exception { - renderPrefix(0, request.getQueryParsed()); + String queryParsed = request instanceof AbstractLocalSearchRequest ? ((AbstractLocalSearchRequest) request) + .getQueryParsed() : request.getQueryString(); + renderPrefix(0, queryParsed); renderDocuments(); renderFacets(); renderTimers(); diff --git a/src/main/java/com/jaeksoft/searchlib/renderer/PagingSearchResult.java b/src/main/java/com/jaeksoft/searchlib/renderer/PagingSearchResult.java index 591cc7f87..c9893b60b 100644 --- a/src/main/java/com/jaeksoft/searchlib/renderer/PagingSearchResult.java +++ b/src/main/java/com/jaeksoft/searchlib/renderer/PagingSearchResult.java @@ -33,7 +33,7 @@ public class PagingSearchResult { private int leftPage; private int rightPage; - public PagingSearchResult(AbstractResultSearch result, int maxPages) { + public PagingSearchResult(AbstractResultSearch result, int maxPages) { AbstractSearchRequest request = result.getRequest(); int numFound = result.getNumFound() - result.getCollapsedDocCount(); diff --git a/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilter.java b/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilter.java index c8d6a3cfd..57f9db910 100644 --- a/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilter.java +++ b/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilter.java @@ -202,8 +202,9 @@ public void setDefaultProperties() throws InstantiationException, properties = getRenderFilterInstance().getDefaultProperties(); } - public List getFilterItems(AbstractResultSearch result) - throws InstantiationException, IllegalAccessException, IOException { + public List getFilterItems( + AbstractResultSearch result) throws InstantiationException, + IllegalAccessException, IOException { if (filterType == null) return null; List filterItem = new ArrayList(); diff --git a/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilterDate.java b/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilterDate.java index c210573cb..e60fb6fac 100644 --- a/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilterDate.java +++ b/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilterDate.java @@ -42,7 +42,7 @@ public class RendererFilterDate extends RendererFilterAbstract { private final List items = new ArrayList(); @Override - public void populate(AbstractResultSearch facetResult, + public void populate(AbstractResultSearch facetResult, List filterItem) { long time = System.currentTimeMillis(); for (Item item : items) diff --git a/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilterFacetMerge.java b/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilterFacetMerge.java index e79a42f7d..163c02346 100644 --- a/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilterFacetMerge.java +++ b/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilterFacetMerge.java @@ -96,7 +96,7 @@ public void init(String fieldName, String properties) throws IOException { } @Override - public void populate(AbstractResultSearch facetResult, + public void populate(AbstractResultSearch facetResult, List filterItem) { if (facetResult == null) return; diff --git a/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilterInterface.java b/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilterInterface.java index 7744ee6c9..79b4b3a42 100644 --- a/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilterInterface.java +++ b/src/main/java/com/jaeksoft/searchlib/renderer/filter/RendererFilterInterface.java @@ -31,7 +31,7 @@ public interface RendererFilterInterface { - void populate(AbstractResultSearch facetResult, + void populate(AbstractResultSearch facetResult, List filterItem); String getDefaultProperties(); diff --git a/src/main/java/com/jaeksoft/searchlib/renderer/plugin/AuthPluginIndexLogin.java b/src/main/java/com/jaeksoft/searchlib/renderer/plugin/AuthPluginIndexLogin.java index a6f4a2fdc..ad79f2a9b 100644 --- a/src/main/java/com/jaeksoft/searchlib/renderer/plugin/AuthPluginIndexLogin.java +++ b/src/main/java/com/jaeksoft/searchlib/renderer/plugin/AuthPluginIndexLogin.java @@ -92,7 +92,7 @@ public User getUser(Renderer renderer, String username, String password) searchFieldRequest.setStart(0); searchFieldRequest.setRows(1); searchFieldRequest.addReturnField(GROUPS_FIELD); - AbstractResultSearch result = (AbstractResultSearch) authClient + AbstractResultSearch result = (AbstractResultSearch) authClient .request(searchFieldRequest); if (result == null || result.getNumFound() == 0) throw new AuthException("Authentication failed."); diff --git a/src/main/java/com/jaeksoft/searchlib/report/ReportsManager.java b/src/main/java/com/jaeksoft/searchlib/report/ReportsManager.java index b540663cd..7a068ab50 100644 --- a/src/main/java/com/jaeksoft/searchlib/report/ReportsManager.java +++ b/src/main/java/com/jaeksoft/searchlib/report/ReportsManager.java @@ -171,7 +171,7 @@ public Facet getSearchReport(String topKeywords, Date startDate, dateTo = endDate == null ? "99999999999999" : modifyDate(endDate); searchRequest = generateSearchRequest(topKeywords, fromDate, dateTo, withResult, rows); - AbstractResultSearch result = (AbstractResultSearch) reportsClient + AbstractResultSearch result = (AbstractResultSearch) reportsClient .request(searchRequest); FacetList facet = result.getFacetList(); return facet.getByField("keywords"); diff --git a/src/main/java/com/jaeksoft/searchlib/request/AbstractLocalSearchRequest.java b/src/main/java/com/jaeksoft/searchlib/request/AbstractLocalSearchRequest.java new file mode 100644 index 000000000..01e3cc6ae --- /dev/null +++ b/src/main/java/com/jaeksoft/searchlib/request/AbstractLocalSearchRequest.java @@ -0,0 +1,283 @@ +/** + * License Agreement for OpenSearchServer + * + * Copyright (C) 2015 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.request; + +import java.io.IOException; + +import org.apache.lucene.queryParser.QueryParser; +import org.apache.lucene.search.BooleanQuery; +import org.apache.lucene.search.Query; +import org.apache.lucene.util.Version; + +import com.jaeksoft.searchlib.SearchLibException; +import com.jaeksoft.searchlib.analysis.LanguageEnum; +import com.jaeksoft.searchlib.analysis.PerFieldAnalyzer; +import com.jaeksoft.searchlib.authentication.AuthManager; +import com.jaeksoft.searchlib.config.Config; +import com.jaeksoft.searchlib.function.expression.SyntaxError; +import com.jaeksoft.searchlib.index.ReaderAbstract; +import com.jaeksoft.searchlib.index.ReaderInterface; +import com.jaeksoft.searchlib.query.ParseException; +import com.jaeksoft.searchlib.result.AbstractResult; +import com.jaeksoft.searchlib.result.ResultSearchSingle; +import com.jaeksoft.searchlib.schema.Schema; +import com.jaeksoft.searchlib.schema.SchemaField; + +public abstract class AbstractLocalSearchRequest extends AbstractSearchRequest + implements RequestInterfaces.ReturnedFieldInterface, + RequestInterfaces.FilterListInterface { + + private transient Query boostedComplexQuery; + private transient Query notBoostedComplexQuery; + private transient Query snippetSimpleQuery; + + protected transient PerFieldAnalyzer analyzer; + + protected transient QueryParser queryParser; + private String queryParsed; + + protected AbstractLocalSearchRequest(Config config, RequestTypeEnum type) { + super(config, type); + } + + @Override + protected void setDefaultValues() { + super.setDefaultValues(); + this.queryParser = null; + this.queryParsed = null; + this.snippetSimpleQuery = null; + this.boostedComplexQuery = null; + this.notBoostedComplexQuery = null; + this.analyzer = null; + this.queryParsed = null; + } + + @Override + public void copyFrom(AbstractRequest request) { + super.copyFrom(request); + this.snippetSimpleQuery = null; + this.boostedComplexQuery = null; + this.notBoostedComplexQuery = null; + this.analyzer = null; + this.queryParsed = null; + } + + @Override + protected void resetNoLock() { + super.resetNoLock(); + this.queryParser = null; + this.queryParsed = null; + this.snippetSimpleQuery = null; + this.boostedComplexQuery = null; + this.notBoostedComplexQuery = null; + this.analyzer = null; + } + + private PerFieldAnalyzer checkAnalyzer() throws SearchLibException { + if (analyzer == null) + analyzer = config.getSchema().getQueryPerFieldAnalyzer(lang); + return analyzer; + } + + public PerFieldAnalyzer getAnalyzer() throws SearchLibException { + rwl.r.lock(); + try { + if (analyzer != null) + return analyzer; + } finally { + rwl.r.unlock(); + } + rwl.w.lock(); + try { + checkAnalyzer(); + return analyzer; + } finally { + rwl.w.unlock(); + } + } + + protected abstract Query newSnippetQuery(String queryString) + throws IOException, ParseException, SyntaxError, SearchLibException; + + public Query getSnippetQuery() throws IOException, ParseException, + SyntaxError, SearchLibException { + rwl.r.lock(); + try { + if (snippetSimpleQuery != null) + return snippetSimpleQuery; + } finally { + rwl.r.unlock(); + } + rwl.w.lock(); + try { + if (snippetSimpleQuery != null) + return snippetSimpleQuery; + getQueryParser(); + checkAnalyzer(); + snippetSimpleQuery = newSnippetQuery(queryString); + return snippetSimpleQuery; + } finally { + rwl.w.unlock(); + } + } + + protected abstract Query newComplexQuery(String queryString) + throws ParseException, SyntaxError, SearchLibException, IOException; + + private Query newComplexQuery() throws ParseException, SearchLibException, + SyntaxError, IOException { + getQueryParser(); + checkAnalyzer(); + Query query = newComplexQuery(queryString); + if (query == null) + query = new BooleanQuery(); + return query; + } + + public Query getNotBoostedQuery() throws ParseException, + SearchLibException, SyntaxError, IOException { + rwl.r.lock(); + try { + if (notBoostedComplexQuery != null) + return notBoostedComplexQuery; + } finally { + rwl.r.unlock(); + } + rwl.w.lock(); + try { + if (notBoostedComplexQuery != null) + return notBoostedComplexQuery; + notBoostedComplexQuery = newComplexQuery(); + return notBoostedComplexQuery; + } finally { + rwl.w.unlock(); + } + } + + @Override + public Query getQuery() throws ParseException, SyntaxError, + SearchLibException, IOException { + rwl.r.lock(); + try { + if (boostedComplexQuery != null) + return boostedComplexQuery; + } finally { + rwl.r.unlock(); + } + rwl.w.lock(); + try { + if (boostedComplexQuery != null) + return boostedComplexQuery; + boostedComplexQuery = newComplexQuery(); + for (BoostQuery boostQuery : boostingQueries) + boostedComplexQuery = boostQuery.getNewQuery( + boostedComplexQuery, queryParser); + queryParsed = boostedComplexQuery.toString(); + return boostedComplexQuery; + } finally { + rwl.w.unlock(); + } + } + + private QueryParser getQueryParser() throws ParseException, + SearchLibException { + if (queryParser != null) + return queryParser; + Schema schema = getConfig().getSchema(); + SchemaField field = schema.getFieldList().getDefaultField(); + if (field == null) + throw new SearchLibException( + "Please select a default field in the schema"); + queryParser = new QueryParser(Version.LUCENE_36, field.getName(), + checkAnalyzer()); + queryParser.setAllowLeadingWildcard(allowLeadingWildcard); + queryParser.setPhraseSlop(phraseSlop); + queryParser.setDefaultOperator(defaultOperator.lucop); + queryParser.setLowercaseExpandedTerms(false); + return queryParser; + } + + public void setBoostedComplexQuery(Query query) { + rwl.w.lock(); + try { + boostedComplexQuery = query; + } finally { + rwl.w.unlock(); + } + } + + final public String getQueryParsed() throws ParseException, SyntaxError, + SearchLibException, IOException { + getQuery(); + rwl.r.lock(); + try { + return queryParsed; + } finally { + rwl.r.unlock(); + } + } + + @Override + protected void setQueryStringNoLock(String q) { + super.setQueryStringNoLock(q); + boostedComplexQuery = null; + notBoostedComplexQuery = null; + snippetSimpleQuery = null; + } + + @Override + protected void setLangNoLock(LanguageEnum lang) { + super.setLangNoLock(lang); + analyzer = null; + } + + @Override + public AbstractResult execute(ReaderInterface reader) + throws SearchLibException { + try { + AuthManager authManager = config.getAuthManager(); + if (authManager.isEnabled() + && !(this instanceof SearchFilterRequest)) { + authManager.apply(this); + } + return new ResultSearchSingle((ReaderAbstract) reader, this); + } catch (IOException e) { + throw new SearchLibException(e); + } catch (ParseException e) { + throw new SearchLibException(e); + } catch (SyntaxError e) { + throw new SearchLibException(e); + } catch (SearchLibException e) { + throw new SearchLibException(e); + } catch (InstantiationException e) { + throw new SearchLibException(e); + } catch (IllegalAccessException e) { + throw new SearchLibException(e); + } catch (ClassNotFoundException e) { + throw new SearchLibException(e); + } + } + +} diff --git a/src/main/java/com/jaeksoft/searchlib/request/AbstractSearchRequest.java b/src/main/java/com/jaeksoft/searchlib/request/AbstractSearchRequest.java index 2e641d09e..92596d264 100644 --- a/src/main/java/com/jaeksoft/searchlib/request/AbstractSearchRequest.java +++ b/src/main/java/com/jaeksoft/searchlib/request/AbstractSearchRequest.java @@ -1,7 +1,7 @@ /** * License Agreement for OpenSearchServer * - * Copyright (C) 2008-2014 Emmanuel Keller / Jaeksoft + * Copyright (C) 2008-2015 Emmanuel Keller / Jaeksoft * * http://www.open-search-server.com * @@ -24,7 +24,6 @@ package com.jaeksoft.searchlib.request; -import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -33,10 +32,6 @@ import javax.xml.xpath.XPathExpressionException; -import org.apache.lucene.queryParser.QueryParser; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.Query; -import org.apache.lucene.util.Version; import org.w3c.dom.DOMException; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -44,8 +39,6 @@ import com.jaeksoft.searchlib.SearchLibException; import com.jaeksoft.searchlib.analysis.LanguageEnum; -import com.jaeksoft.searchlib.analysis.PerFieldAnalyzer; -import com.jaeksoft.searchlib.authentication.AuthManager; import com.jaeksoft.searchlib.collapse.CollapseFunctionField; import com.jaeksoft.searchlib.collapse.CollapseParameters; import com.jaeksoft.searchlib.collapse.CollapseParameters.Mode; @@ -63,13 +56,8 @@ import com.jaeksoft.searchlib.function.expression.SyntaxError; import com.jaeksoft.searchlib.geo.GeoParameters; import com.jaeksoft.searchlib.geo.GeoParameters.DistanceReturn; -import com.jaeksoft.searchlib.index.ReaderAbstract; -import com.jaeksoft.searchlib.index.ReaderInterface; import com.jaeksoft.searchlib.join.JoinList; import com.jaeksoft.searchlib.query.ParseException; -import com.jaeksoft.searchlib.result.AbstractResult; -import com.jaeksoft.searchlib.result.ResultSearchSingle; -import com.jaeksoft.searchlib.schema.Schema; import com.jaeksoft.searchlib.schema.SchemaField; import com.jaeksoft.searchlib.schema.SchemaFieldList; import com.jaeksoft.searchlib.scoring.AdvancedScore; @@ -89,23 +77,15 @@ public abstract class AbstractSearchRequest extends AbstractRequest implements RequestInterfaces.ReturnedFieldInterface, RequestInterfaces.FilterListInterface { - private transient Query boostedComplexQuery; - private transient Query notBoostedComplexQuery; - private transient Query snippetSimpleQuery; - - protected transient PerFieldAnalyzer analyzer; - - protected transient QueryParser queryParser; - private FilterList filterList; private JoinList joinList; - private boolean allowLeadingWildcard; + protected boolean allowLeadingWildcard; protected int phraseSlop; protected OperatorEnum defaultOperator; private SnippetFieldList snippetFieldList; private ReturnFieldList returnFieldList; private FacetFieldList facetFieldList; - private List boostingQueries; + protected List boostingQueries; private SortFieldList sortFieldList; private String collapseField; private int collapseMax; @@ -114,10 +94,9 @@ public abstract class AbstractSearchRequest extends AbstractRequest implements private Set collapseFunctionFields; private int start; private int rows; - private LanguageEnum lang; - private String queryString; + protected volatile LanguageEnum lang; + protected String queryString; private AdvancedScore advancedScore; - private String queryParsed; private boolean withSortValues; protected boolean emptyReturnsAll; private final GeoParameters geoParameters = new GeoParameters(); @@ -131,8 +110,6 @@ protected AbstractSearchRequest(Config config, RequestTypeEnum type) { @Override protected void setDefaultValues() { super.setDefaultValues(); - this.queryParser = null; - this.queryParsed = null; this.filterList = new FilterList(this.config); this.joinList = new JoinList(this.config); this.allowLeadingWildcard = false; @@ -153,14 +130,9 @@ protected void setDefaultValues() { this.start = 0; this.rows = 10; this.lang = null; - this.snippetSimpleQuery = null; - this.boostedComplexQuery = null; - this.notBoostedComplexQuery = null; - this.analyzer = null; this.queryString = null; this.advancedScore = null; this.withSortValues = false; - this.queryParsed = null; this.emptyReturnsAll = true; this.forFilter = false; } @@ -203,55 +175,21 @@ public void copyFrom(AbstractRequest request) { this.start = searchRequest.start; this.rows = searchRequest.rows; this.lang = searchRequest.lang; - this.snippetSimpleQuery = null; - this.boostedComplexQuery = null; - this.notBoostedComplexQuery = null; - this.analyzer = null; this.queryString = searchRequest.queryString; this.advancedScore = AdvancedScore.copy(searchRequest.advancedScore); - this.queryParsed = null; this.emptyReturnsAll = searchRequest.emptyReturnsAll; this.forFilter = searchRequest.forFilter; } @Override protected void resetNoLock() { - this.queryParser = null; - this.queryParsed = null; - this.snippetSimpleQuery = null; - this.boostedComplexQuery = null; - this.notBoostedComplexQuery = null; - this.analyzer = null; if (snippetFieldList != null) for (SnippetField snippetField : snippetFieldList) snippetField.reset(); filterList.reset(); } - private PerFieldAnalyzer checkAnalyzer() throws SearchLibException { - if (analyzer == null) - analyzer = config.getSchema().getQueryPerFieldAnalyzer(lang); - return analyzer; - } - - public PerFieldAnalyzer getAnalyzer() throws SearchLibException { - rwl.r.lock(); - try { - if (analyzer != null) - return analyzer; - } finally { - rwl.r.unlock(); - } - rwl.w.lock(); - try { - checkAnalyzer(); - return analyzer; - } finally { - rwl.w.unlock(); - } - } - - public int getPhraseSlop() { + final public int getPhraseSlop() { rwl.r.lock(); try { return phraseSlop; @@ -260,7 +198,7 @@ public int getPhraseSlop() { } } - public void setPhraseSlop(int value) { + final public void setPhraseSlop(int value) { rwl.w.lock(); try { phraseSlop = value; @@ -269,7 +207,7 @@ public void setPhraseSlop(int value) { } } - public boolean getEmptyReturnsAll() { + final public boolean getEmptyReturnsAll() { rwl.r.lock(); try { return emptyReturnsAll; @@ -278,7 +216,7 @@ public boolean getEmptyReturnsAll() { } } - public void setEmptyReturnsAll(boolean value) { + final public void setEmptyReturnsAll(boolean value) { rwl.w.lock(); try { emptyReturnsAll = value; @@ -287,117 +225,7 @@ public void setEmptyReturnsAll(boolean value) { } } - protected abstract Query newSnippetQuery(String queryString) - throws IOException, ParseException, SyntaxError, SearchLibException; - - public Query getSnippetQuery() throws IOException, ParseException, - SyntaxError, SearchLibException { - rwl.r.lock(); - try { - if (snippetSimpleQuery != null) - return snippetSimpleQuery; - } finally { - rwl.r.unlock(); - } - rwl.w.lock(); - try { - if (snippetSimpleQuery != null) - return snippetSimpleQuery; - getQueryParser(); - checkAnalyzer(); - snippetSimpleQuery = newSnippetQuery(queryString); - return snippetSimpleQuery; - } finally { - rwl.w.unlock(); - } - } - - protected abstract Query newComplexQuery(String queryString) - throws ParseException, SyntaxError, SearchLibException, IOException; - - private Query newComplexQuery() throws ParseException, SearchLibException, - SyntaxError, IOException { - getQueryParser(); - checkAnalyzer(); - Query query = newComplexQuery(queryString); - if (query == null) - query = new BooleanQuery(); - return query; - } - - public Query getNotBoostedQuery() throws ParseException, - SearchLibException, SyntaxError, IOException { - rwl.r.lock(); - try { - if (notBoostedComplexQuery != null) - return notBoostedComplexQuery; - } finally { - rwl.r.unlock(); - } - rwl.w.lock(); - try { - if (notBoostedComplexQuery != null) - return notBoostedComplexQuery; - notBoostedComplexQuery = newComplexQuery(); - return notBoostedComplexQuery; - } finally { - rwl.w.unlock(); - } - } - - @Override - public Query getQuery() throws ParseException, SyntaxError, - SearchLibException, IOException { - rwl.r.lock(); - try { - if (boostedComplexQuery != null) - return boostedComplexQuery; - } finally { - rwl.r.unlock(); - } - rwl.w.lock(); - try { - if (boostedComplexQuery != null) - return boostedComplexQuery; - boostedComplexQuery = newComplexQuery(); - for (BoostQuery boostQuery : boostingQueries) - boostedComplexQuery = boostQuery.getNewQuery( - boostedComplexQuery, queryParser); - queryParsed = boostedComplexQuery.toString(); - return boostedComplexQuery; - } finally { - rwl.w.unlock(); - } - } - - private QueryParser getQueryParser() throws ParseException, - SearchLibException { - if (queryParser != null) - return queryParser; - Schema schema = getConfig().getSchema(); - SchemaField field = schema.getFieldList().getDefaultField(); - if (field == null) - throw new SearchLibException( - "Please select a default field in the schema"); - queryParser = new QueryParser(Version.LUCENE_36, field.getName(), - checkAnalyzer()); - queryParser.setAllowLeadingWildcard(allowLeadingWildcard); - queryParser.setPhraseSlop(phraseSlop); - queryParser.setDefaultOperator(defaultOperator.lucop); - queryParser.setLowercaseExpandedTerms(false); - return queryParser; - } - - public void setBoostedComplexQuery(Query query) { - rwl.w.lock(); - try { - boostedComplexQuery = query; - } finally { - rwl.w.unlock(); - } - } - - public String getQueryString() { + final public String getQueryString() { rwl.r.lock(); try { return queryString; @@ -406,30 +234,20 @@ public String getQueryString() { } } - final public String getQueryParsed() throws ParseException, SyntaxError, - SearchLibException, IOException { - getQuery(); - rwl.r.lock(); - try { - return queryParsed; - } finally { - rwl.r.unlock(); - } + protected void setQueryStringNoLock(String q) { + queryString = q; } - public void setQueryString(String q) { + final public void setQueryString(String q) { rwl.w.lock(); try { - queryString = q; - boostedComplexQuery = null; - notBoostedComplexQuery = null; - snippetSimpleQuery = null; + setQueryStringNoLock(q); } finally { rwl.w.unlock(); } } - public AdvancedScore getAdvancedScore() { + final public AdvancedScore getAdvancedScore() { rwl.r.lock(); try { return advancedScore; @@ -464,7 +282,7 @@ final public void removeAdvancedScore(final AdvancedScoreItem scoreItem) { } } - public JoinList getJoinList() { + final public JoinList getJoinList() { rwl.r.lock(); try { return this.joinList; @@ -484,7 +302,8 @@ public FilterList getFilterList() { } @Override - public void addFilter(String req, boolean negative) throws ParseException { + final public void addFilter(String req, boolean negative) + throws ParseException { rwl.w.lock(); try { this.filterList.add(new QueryFilter(req, negative, @@ -494,7 +313,7 @@ public void addFilter(String req, boolean negative) throws ParseException { } } - public void addTermFilter(String field, String term, boolean negative) { + final public void addTermFilter(String field, String term, boolean negative) { rwl.w.lock(); try { this.filterList.add(new TermFilter(field, term, negative, @@ -520,7 +339,7 @@ final public void removeFilterSource(FilterAbstract.Source source) { } } - public SnippetFieldList getSnippetFieldList() { + final public SnippetFieldList getSnippetFieldList() { rwl.r.lock(); try { return this.snippetFieldList; @@ -530,7 +349,7 @@ public SnippetFieldList getSnippetFieldList() { } @Override - public ReturnFieldList getReturnFieldList() { + final public ReturnFieldList getReturnFieldList() { rwl.r.lock(); try { return this.returnFieldList; @@ -555,7 +374,8 @@ private void addReturnFieldNoLock(SchemaFieldList schemaFieldList, } @Override - public void addReturnField(String fieldName) throws SearchLibException { + final public void addReturnField(String fieldName) + throws SearchLibException { rwl.w.lock(); try { addReturnFieldNoLock(config.getSchema().getFieldList(), fieldName); @@ -564,7 +384,7 @@ public void addReturnField(String fieldName) throws SearchLibException { } } - public SortFieldList getSortFieldList() { + final public SortFieldList getSortFieldList() { rwl.r.lock(); try { return this.sortFieldList; @@ -607,7 +427,7 @@ public boolean isDistanceRequired() { } } - public boolean isJoin() { + final public boolean isJoin() { rwl.r.lock(); try { if (joinList == null) @@ -637,7 +457,7 @@ public boolean isDocIdRequired() { } } - public void addSort(final int joinNumber, final String fieldName, + final public void addSort(final int joinNumber, final String fieldName, final boolean desc, final boolean nullFirst) { rwl.w.lock(); try { @@ -648,7 +468,7 @@ public void addSort(final int joinNumber, final String fieldName, } } - public FacetFieldList getFacetFieldList() { + final public FacetFieldList getFacetFieldList() { rwl.r.lock(); try { return this.facetFieldList; @@ -657,7 +477,7 @@ public FacetFieldList getFacetFieldList() { } } - public void setCollapseField(String collapseField) { + final public void setCollapseField(String collapseField) { rwl.w.lock(); try { this.collapseField = collapseField; @@ -666,7 +486,7 @@ public void setCollapseField(String collapseField) { } } - public void setCollapseMax(int collapseMax) { + final public void setCollapseMax(int collapseMax) { rwl.w.lock(); try { this.collapseMax = collapseMax; @@ -675,7 +495,7 @@ public void setCollapseMax(int collapseMax) { } } - public String getCollapseField() { + final public String getCollapseField() { rwl.r.lock(); try { return this.collapseField; @@ -684,7 +504,7 @@ public String getCollapseField() { } } - public int getCollapseMax() { + final public int getCollapseMax() { rwl.r.lock(); try { return this.collapseMax; @@ -693,7 +513,7 @@ public int getCollapseMax() { } } - public Collection getCollapseFunctionFields() { + final public Collection getCollapseFunctionFields() { rwl.r.lock(); try { return this.collapseFunctionFields; @@ -702,7 +522,8 @@ public Collection getCollapseFunctionFields() { } } - public void addCollapseFunctionField(CollapseFunctionField functionField) { + final public void addCollapseFunctionField( + CollapseFunctionField functionField) { if (functionField == null) return; rwl.w.lock(); @@ -716,7 +537,8 @@ public void addCollapseFunctionField(CollapseFunctionField functionField) { } } - public void removeCollapseFunctionField(CollapseFunctionField functionField) { + final public void removeCollapseFunctionField( + CollapseFunctionField functionField) { rwl.w.lock(); try { collapseFunctionFields.remove(functionField); @@ -727,7 +549,7 @@ public void removeCollapseFunctionField(CollapseFunctionField functionField) { } } - public int getStart() { + final public int getStart() { rwl.r.lock(); try { return this.start; @@ -736,7 +558,7 @@ public int getStart() { } } - public void setStart(int start) { + final public void setStart(int start) { rwl.w.lock(); try { this.start = start; @@ -745,7 +567,7 @@ public void setStart(int start) { } } - public boolean isWithSortValues() { + final public boolean isWithSortValues() { rwl.r.lock(); try { return withSortValues; @@ -754,7 +576,7 @@ public boolean isWithSortValues() { } } - public void setWithSortValues(boolean withSortValues) { + final public void setWithSortValues(boolean withSortValues) { rwl.w.lock(); try { this.withSortValues = withSortValues; @@ -763,7 +585,7 @@ public void setWithSortValues(boolean withSortValues) { } } - public int getRows() { + final public int getRows() { rwl.r.lock(); try { return this.rows; @@ -772,7 +594,7 @@ public int getRows() { } } - public LanguageEnum getLang() { + final public LanguageEnum getLang() { rwl.r.lock(); try { return this.lang; @@ -781,7 +603,7 @@ public LanguageEnum getLang() { } } - public void setRows(int rows) { + final public void setRows(int rows) { rwl.w.lock(); try { this.rows = rows; @@ -790,7 +612,7 @@ public void setRows(int rows) { } } - public int getEnd() { + final public int getEnd() { rwl.r.lock(); try { return this.start + this.rows; @@ -800,7 +622,7 @@ public int getEnd() { } @Override - public String toString() { + final public String toString() { rwl.r.lock(); try { StringBuilder sb = new StringBuilder(); @@ -813,7 +635,7 @@ public String toString() { sb.append(" Rows: "); sb.append(rows); sb.append(" Query: "); - sb.append(boostedComplexQuery); + sb.append(queryString); sb.append(" Facet: " + getFacetFieldList().toString()); if (getCollapseMode() != CollapseParameters.Mode.OFF) sb.append(" Collapsing Mode: " + getCollapseMode() + " Type: " @@ -825,19 +647,22 @@ public String toString() { } } - public void setLang(LanguageEnum lang) { + protected void setLangNoLock(LanguageEnum lang) { + if (this.lang == lang) + return; + this.lang = lang; + } + + final public void setLang(LanguageEnum lang) { rwl.w.lock(); try { - if (this.lang == lang) - return; - this.lang = lang; - analyzer = null; + setLangNoLock(lang); } finally { rwl.w.unlock(); } } - public String getDefaultOperator() { + final public String getDefaultOperator() { rwl.r.lock(); try { return defaultOperator.toString(); @@ -850,7 +675,7 @@ public void setDefaultOperator(String value) { setDefaultOperator(OperatorEnum.find(value)); } - public void setDefaultOperator(OperatorEnum operator) { + final public void setDefaultOperator(OperatorEnum operator) { rwl.w.lock(); try { defaultOperator = operator; @@ -859,7 +684,7 @@ public void setDefaultOperator(OperatorEnum operator) { } } - public void setCollapseMode(CollapseParameters.Mode mode) { + final public void setCollapseMode(CollapseParameters.Mode mode) { rwl.w.lock(); try { this.collapseMode = mode; @@ -868,7 +693,7 @@ public void setCollapseMode(CollapseParameters.Mode mode) { } } - public CollapseParameters.Mode getCollapseMode() { + final public CollapseParameters.Mode getCollapseMode() { rwl.r.lock(); try { return this.collapseMode; @@ -877,7 +702,7 @@ public CollapseParameters.Mode getCollapseMode() { } } - public void setCollapseType(CollapseParameters.Type type) { + final public void setCollapseType(CollapseParameters.Type type) { rwl.w.lock(); try { this.collapseType = type; @@ -886,7 +711,7 @@ public void setCollapseType(CollapseParameters.Type type) { } } - public CollapseParameters.Type getCollapseType() { + final public CollapseParameters.Type getCollapseType() { rwl.r.lock(); try { return this.collapseType; @@ -899,7 +724,7 @@ final public GeoParameters getGeoParameters() { return geoParameters; } - public boolean isFacet() { + final public boolean isFacet() { rwl.r.lock(); try { if (facetFieldList == null) @@ -910,7 +735,7 @@ public boolean isFacet() { } } - public boolean isCollapsing() { + final public boolean isCollapsing() { rwl.r.lock(); try { if (collapseMode == Mode.OFF) @@ -923,7 +748,7 @@ public boolean isCollapsing() { } } - public BoostQuery[] getBoostingQueries() { + final public BoostQuery[] getBoostingQueries() { rwl.r.lock(); try { BoostQuery[] queries = new BoostQuery[boostingQueries.size()]; @@ -933,7 +758,7 @@ public BoostQuery[] getBoostingQueries() { } } - public void setBoostingQuery(BoostQuery oldOne, BoostQuery newOne) { + final public void setBoostingQuery(BoostQuery oldOne, BoostQuery newOne) { rwl.w.lock(); try { if (oldOne != null) { @@ -1130,7 +955,7 @@ public final void writeXmlConfig(XmlWriter xmlWriter) throws SAXException { } @Override - public void setFromServletNoLock(final ServletTransaction transaction, + protected void setFromServletNoLock(final ServletTransaction transaction, final String prefix) throws SyntaxError, SearchLibException { super.setFromServletNoLock(transaction, prefix); @@ -1279,33 +1104,6 @@ else if ((p = transaction.getParameterString(StringUtils.fastConcat( geoParameters.setFromServlet(transaction, prefix); } - @Override - public AbstractResult execute(ReaderInterface reader) - throws SearchLibException { - try { - AuthManager authManager = config.getAuthManager(); - if (authManager.isEnabled() - && !(this instanceof SearchFilterRequest)) { - authManager.apply(this); - } - return new ResultSearchSingle((ReaderAbstract) reader, this); - } catch (IOException e) { - throw new SearchLibException(e); - } catch (ParseException e) { - throw new SearchLibException(e); - } catch (SyntaxError e) { - throw new SearchLibException(e); - } catch (SearchLibException e) { - throw new SearchLibException(e); - } catch (InstantiationException e) { - throw new SearchLibException(e); - } catch (IllegalAccessException e) { - throw new SearchLibException(e); - } catch (ClassNotFoundException e) { - throw new SearchLibException(e); - } - } - @Override public abstract String getInfo(); @@ -1318,7 +1116,7 @@ public boolean isForFilter() { } } - public void setForFilter(boolean b) { + final public void setForFilter(boolean b) { rwl.w.lock(); try { forFilter = b; @@ -1326,4 +1124,5 @@ public void setForFilter(boolean b) { rwl.w.unlock(); } } + } diff --git a/src/main/java/com/jaeksoft/searchlib/request/MoreLikeThisRequest.java b/src/main/java/com/jaeksoft/searchlib/request/MoreLikeThisRequest.java index bb804ef41..5679eeff8 100644 --- a/src/main/java/com/jaeksoft/searchlib/request/MoreLikeThisRequest.java +++ b/src/main/java/com/jaeksoft/searchlib/request/MoreLikeThisRequest.java @@ -182,7 +182,7 @@ public Query getQuery() throws SearchLibException, IOException { config); searchRequest.setRows(1); searchRequest.setQueryString(docQuery); - AbstractResultSearch result = (AbstractResultSearch) index + AbstractResultSearch result = (AbstractResultSearch) index .request(searchRequest); if (result.getNumFound() == 0) return mlt.like(new StringReader("")); diff --git a/src/main/java/com/jaeksoft/searchlib/request/RequestTypeEnum.java b/src/main/java/com/jaeksoft/searchlib/request/RequestTypeEnum.java index 3b74871fd..8ef53ab21 100644 --- a/src/main/java/com/jaeksoft/searchlib/request/RequestTypeEnum.java +++ b/src/main/java/com/jaeksoft/searchlib/request/RequestTypeEnum.java @@ -39,6 +39,8 @@ public enum RequestTypeEnum { SearchRequest(SearchPatternRequest.class, "Search (pattern)"), + SearchMergedRequest(SearchMergedRequest.class, "Search (merged)"), + SpellCheckRequest(SpellCheckRequest.class, "Spell check"), MoreLikeThisRequest(MoreLikeThisRequest.class, "More like this"), diff --git a/src/main/java/com/jaeksoft/searchlib/request/SearchField.java b/src/main/java/com/jaeksoft/searchlib/request/SearchField.java index 5d7e0508b..e4ecac857 100644 --- a/src/main/java/com/jaeksoft/searchlib/request/SearchField.java +++ b/src/main/java/com/jaeksoft/searchlib/request/SearchField.java @@ -217,7 +217,6 @@ public void writeXmlConfig(XmlWriter xmlWriter) throws SAXException { SEARCHFIELD_ATTRIBUTE_BOOLEAN_GROUP, booleanGroup == null ? null : Integer.toString(booleanGroup)); xmlWriter.endElement(); - } @Override diff --git a/src/main/java/com/jaeksoft/searchlib/request/SearchFieldRequest.java b/src/main/java/com/jaeksoft/searchlib/request/SearchFieldRequest.java index a1164602e..93c98a4df 100644 --- a/src/main/java/com/jaeksoft/searchlib/request/SearchFieldRequest.java +++ b/src/main/java/com/jaeksoft/searchlib/request/SearchFieldRequest.java @@ -58,7 +58,7 @@ import com.jaeksoft.searchlib.webservice.query.search.SearchQueryAbstract.FragmenterEnum; import com.jaeksoft.searchlib.webservice.query.search.SearchQueryAbstract.OperatorEnum; -public class SearchFieldRequest extends AbstractSearchRequest implements +public class SearchFieldRequest extends AbstractLocalSearchRequest implements RequestInterfaces.ReturnedFieldInterface, RequestInterfaces.FilterListInterface { diff --git a/src/main/java/com/jaeksoft/searchlib/request/SearchFilterRequest.java b/src/main/java/com/jaeksoft/searchlib/request/SearchFilterRequest.java index 99a300cb4..393123686 100644 --- a/src/main/java/com/jaeksoft/searchlib/request/SearchFilterRequest.java +++ b/src/main/java/com/jaeksoft/searchlib/request/SearchFilterRequest.java @@ -37,7 +37,7 @@ import com.jaeksoft.searchlib.query.ParseException; import com.jaeksoft.searchlib.util.XmlWriter; -public class SearchFilterRequest extends AbstractSearchRequest implements +public class SearchFilterRequest extends AbstractLocalSearchRequest implements RequestInterfaces.ReturnedFieldInterface, RequestInterfaces.FilterListInterface { diff --git a/src/main/java/com/jaeksoft/searchlib/request/SearchMergedRequest.java b/src/main/java/com/jaeksoft/searchlib/request/SearchMergedRequest.java new file mode 100644 index 000000000..8e5878fa3 --- /dev/null +++ b/src/main/java/com/jaeksoft/searchlib/request/SearchMergedRequest.java @@ -0,0 +1,232 @@ +/** + * License Agreement for OpenSearchServer + * + * Copyright (C) 2008-2015 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.request; + +import java.io.IOException; +import java.util.Collection; +import java.util.List; +import java.util.TreeSet; + +import javax.xml.xpath.XPathExpressionException; + +import org.apache.lucene.search.Query; +import org.w3c.dom.DOMException; +import org.w3c.dom.Node; +import org.xml.sax.SAXException; + +import com.jaeksoft.searchlib.SearchLibException; +import com.jaeksoft.searchlib.config.Config; +import com.jaeksoft.searchlib.function.expression.SyntaxError; +import com.jaeksoft.searchlib.index.ReaderInterface; +import com.jaeksoft.searchlib.query.ParseException; +import com.jaeksoft.searchlib.result.AbstractResult; +import com.jaeksoft.searchlib.util.DomUtils; +import com.jaeksoft.searchlib.util.StringUtils; +import com.jaeksoft.searchlib.util.XPathParser; +import com.jaeksoft.searchlib.util.XmlWriter; + +public class SearchMergedRequest extends AbstractSearchRequest implements + RequestInterfaces.ReturnedFieldInterface, + RequestInterfaces.FilterListInterface { + + private final TreeSet requests; + + public SearchMergedRequest() { + super(null, RequestTypeEnum.SearchMergedRequest); + requests = new TreeSet(); + } + + public SearchMergedRequest(Config config) { + super(config, RequestTypeEnum.SearchMergedRequest); + requests = new TreeSet(); + } + + @Override + protected void setDefaultValues() { + super.setDefaultValues(); + } + + @Override + public void copyFrom(AbstractRequest request) { + super.copyFrom(request); + SearchMergedRequest searchMergedRequest = (SearchMergedRequest) request; + requests.clear(); + requests.addAll(searchMergedRequest.requests); + } + + public Collection getRequests() { + return requests; + } + + private final static String REMOTEREQUESTS_NODE_NAME = "remoteRequests"; + private final static String REMOTEREQUEST_NODE_NAME = "remoteRequest"; + private final static String REMOTEREQUEST_REMOTEURL = "url"; + private final static String REMOTEREQUEST_INDEXNAME = "indexName"; + private final static String REMOTEREQUEST_REQUESTNAME = "requestName"; + + @Override + public void fromXmlConfigNoLock(Config config, XPathParser xpp, + Node searchRequestNode) throws XPathExpressionException, + DOMException, ParseException, InstantiationException, + IllegalAccessException, ClassNotFoundException { + super.fromXmlConfigNoLock(config, xpp, searchRequestNode); + Node requestsNode = DomUtils.getFirstNode(searchRequestNode, + REMOTEREQUESTS_NODE_NAME); + if (requestsNode != null) { + List requestNodeList = DomUtils.getNodes(requestsNode, + REMOTEREQUEST_NODE_NAME); + if (requestNodeList != null) + for (Node requestNode : requestNodeList) + requests.add(new RemoteRequest(requestNode)); + } + } + + @Override + public void writeSubXmlConfig(XmlWriter xmlWriter) throws SAXException { + xmlWriter.startElement(REMOTEREQUESTS_NODE_NAME); + for (RemoteRequest request : requests) + request.writeXmlConfig(xmlWriter); + xmlWriter.endElement(); + } + + @Override + public String getInfo() { + return null; + } + + @Override + public Query getQuery() throws ParseException, SyntaxError, + SearchLibException, IOException { + return null; + } + + public void save(RemoteRequest oldRequest, RemoteRequest newRequest) { + if (oldRequest != null) + requests.remove(oldRequest); + if (newRequest != null) + requests.add(new RemoteRequest(newRequest)); + } + + @Override + public AbstractResult execute(ReaderInterface reader) + throws SearchLibException { + // TODO Auto-generated method stub + return null; + } + + public static class RemoteRequest implements Comparable { + + private String remoteURL; + + private String indexName; + + private String requestName; + + public RemoteRequest() { + remoteURL = null; + indexName = null; + requestName = null; + } + + public void writeXmlConfig(XmlWriter xmlWriter) throws SAXException { + xmlWriter.startElement(REMOTEREQUEST_NODE_NAME, + REMOTEREQUEST_REMOTEURL, remoteURL, + REMOTEREQUEST_INDEXNAME, indexName, + REMOTEREQUEST_REQUESTNAME, requestName); + xmlWriter.endElement(); + } + + public RemoteRequest(RemoteRequest request) { + this.remoteURL = request.remoteURL; + this.indexName = request.indexName; + this.requestName = request.requestName; + } + + private RemoteRequest(Node requestNode) { + this.remoteURL = DomUtils.getAttributeText(requestNode, + REMOTEREQUEST_REMOTEURL); + this.indexName = DomUtils.getAttributeText(requestNode, + REMOTEREQUEST_INDEXNAME); + this.requestName = DomUtils.getAttributeText(requestNode, + REMOTEREQUEST_REQUESTNAME); + } + + /** + * @return the remoteURL + */ + public String getRemoteURL() { + return remoteURL; + } + + /** + * @param remoteURL + * the remoteURL to set + */ + public void setRemoteURL(String remoteURL) { + this.remoteURL = remoteURL; + } + + /** + * @return the indexName + */ + public String getIndexName() { + return indexName; + } + + /** + * @param indexName + * the indexName to set + */ + public void setIndexName(String indexName) { + this.indexName = indexName; + } + + /** + * @return the requestName + */ + public String getRequestName() { + return requestName; + } + + /** + * @param requestName + * the requestName to set + */ + public void setRequestName(String requestName) { + this.requestName = requestName; + } + + @Override + public int compareTo(RemoteRequest o) { + int c; + if ((c = StringUtils.compareNullString(remoteURL, o.remoteURL)) != 0) + return c; + if ((c = StringUtils.compareNullString(indexName, o.indexName)) != 0) + return c; + return StringUtils.compareNullString(requestName, o.requestName); + } + } + +} diff --git a/src/main/java/com/jaeksoft/searchlib/request/SearchPatternRequest.java b/src/main/java/com/jaeksoft/searchlib/request/SearchPatternRequest.java index 14675d778..85f68ba58 100644 --- a/src/main/java/com/jaeksoft/searchlib/request/SearchPatternRequest.java +++ b/src/main/java/com/jaeksoft/searchlib/request/SearchPatternRequest.java @@ -43,7 +43,7 @@ import com.jaeksoft.searchlib.util.XPathParser; import com.jaeksoft.searchlib.util.XmlWriter; -public class SearchPatternRequest extends AbstractSearchRequest implements +public class SearchPatternRequest extends AbstractLocalSearchRequest implements RequestInterfaces.ReturnedFieldInterface, RequestInterfaces.FilterListInterface { diff --git a/src/main/java/com/jaeksoft/searchlib/result/AbstractResultSearch.java b/src/main/java/com/jaeksoft/searchlib/result/AbstractResultSearch.java index 7280c247a..09a3db130 100644 --- a/src/main/java/com/jaeksoft/searchlib/result/AbstractResultSearch.java +++ b/src/main/java/com/jaeksoft/searchlib/result/AbstractResultSearch.java @@ -43,9 +43,8 @@ import com.jaeksoft.searchlib.result.collector.ScoreInterface; import com.jaeksoft.searchlib.util.Timer; -public abstract class AbstractResultSearch extends - AbstractResult implements - ResultDocumentsInterface { +public abstract class AbstractResultSearch + extends AbstractResult implements ResultDocumentsInterface { protected final ReaderAbstract reader; transient protected CollapseAbstract collapse; @@ -58,8 +57,7 @@ public abstract class AbstractResultSearch extends protected int collapsedDocCount; private JoinResult[] joinResults; - protected AbstractResultSearch(ReaderAbstract reader, - AbstractSearchRequest searchRequest) { + protected AbstractResultSearch(ReaderAbstract reader, T searchRequest) { super(searchRequest); this.reader = reader; this.numFound = 0; @@ -212,7 +210,7 @@ public String toString() { @Override protected Render getRenderXml() { - return new RenderSearchXml(this); + return new RenderSearchXml(this); } @Override @@ -222,7 +220,7 @@ protected Render getRenderCsv() { @Override protected Render getRenderJson(boolean indent) { - return new RenderSearchJson(this, indent); + return new RenderSearchJson(this, indent); } } diff --git a/src/main/java/com/jaeksoft/searchlib/result/ResultDocument.java b/src/main/java/com/jaeksoft/searchlib/result/ResultDocument.java index 2fd515298..74c351143 100644 --- a/src/main/java/com/jaeksoft/searchlib/result/ResultDocument.java +++ b/src/main/java/com/jaeksoft/searchlib/result/ResultDocument.java @@ -38,7 +38,7 @@ import com.jaeksoft.searchlib.index.ReaderAbstract; import com.jaeksoft.searchlib.index.ReaderInterface; import com.jaeksoft.searchlib.query.ParseException; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.request.ReturnField; import com.jaeksoft.searchlib.result.collector.CollapseDocInterface; import com.jaeksoft.searchlib.result.collector.DocIdInterface; @@ -63,7 +63,7 @@ public class ResultDocument { final private List collapsedDocuments; final private float score; - public ResultDocument(final AbstractSearchRequest searchRequest, + public ResultDocument(final AbstractLocalSearchRequest searchRequest, final TreeSet fieldSet, final int docId, final ReaderInterface reader, final float score, final String joinParameter, final int collapsedDocumentCount, diff --git a/src/main/java/com/jaeksoft/searchlib/result/ResultMoreLikeThis.java b/src/main/java/com/jaeksoft/searchlib/result/ResultMoreLikeThis.java index 6bcaa2eba..8d26bbee9 100644 --- a/src/main/java/com/jaeksoft/searchlib/result/ResultMoreLikeThis.java +++ b/src/main/java/com/jaeksoft/searchlib/result/ResultMoreLikeThis.java @@ -39,7 +39,7 @@ import com.jaeksoft.searchlib.render.Render; import com.jaeksoft.searchlib.render.RenderMoreLikeThisJson; import com.jaeksoft.searchlib.render.RenderMoreLikeThisXml; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.request.MoreLikeThisRequest; import com.jaeksoft.searchlib.request.SearchPatternRequest; import com.jaeksoft.searchlib.result.collector.DocIdInterface; @@ -65,7 +65,7 @@ public ResultMoreLikeThis(ReaderAbstract reader, MoreLikeThisRequest request) ClassNotFoundException { super(request); this.reader = reader; - AbstractSearchRequest searchRequest = new SearchPatternRequest( + AbstractLocalSearchRequest searchRequest = new SearchPatternRequest( request.getConfig()); for (FilterAbstract filter : request.getFilterList()) searchRequest.getFilterList().add(filter); diff --git a/src/main/java/com/jaeksoft/searchlib/result/ResultSearchSingle.java b/src/main/java/com/jaeksoft/searchlib/result/ResultSearchSingle.java index 486591dac..3e07ddfee 100644 --- a/src/main/java/com/jaeksoft/searchlib/result/ResultSearchSingle.java +++ b/src/main/java/com/jaeksoft/searchlib/result/ResultSearchSingle.java @@ -39,7 +39,7 @@ import com.jaeksoft.searchlib.join.JoinList; import com.jaeksoft.searchlib.join.JoinResult; import com.jaeksoft.searchlib.query.ParseException; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.request.SearchFilterRequest; import com.jaeksoft.searchlib.result.collector.CollapseDocInterface; import com.jaeksoft.searchlib.result.collector.DocIdInterface; @@ -50,7 +50,8 @@ import com.jaeksoft.searchlib.util.Timer; import com.jaeksoft.searchlib.webservice.query.document.IndexDocumentResult; -public class ResultSearchSingle extends AbstractResultSearch { +public class ResultSearchSingle extends + AbstractResultSearch { transient private DocSetHits docSetHits; transient private final TreeSet fieldNameSet; @@ -70,7 +71,7 @@ public class ResultSearchSingle extends AbstractResultSearch { * @throws InstantiationException */ public ResultSearchSingle(ReaderAbstract reader, - AbstractSearchRequest searchRequest) throws IOException, + AbstractLocalSearchRequest searchRequest) throws IOException, ParseException, SyntaxError, SearchLibException, InstantiationException, IllegalAccessException, ClassNotFoundException { diff --git a/src/main/java/com/jaeksoft/searchlib/scheduler/task/TaskPullFields.java b/src/main/java/com/jaeksoft/searchlib/scheduler/task/TaskPullFields.java index e9ad5642e..c4d33fc30 100644 --- a/src/main/java/com/jaeksoft/searchlib/scheduler/task/TaskPullFields.java +++ b/src/main/java/com/jaeksoft/searchlib/scheduler/task/TaskPullFields.java @@ -115,7 +115,7 @@ public void execute(Client client, TaskProperties properties, for (;;) { searchRequest.setStart(start); - AbstractResultSearch result = (AbstractResultSearch) executionData.sourceClient + AbstractResultSearch result = (AbstractResultSearch) executionData.sourceClient .request(searchRequest); if (result.getDocumentCount() <= 0) diff --git a/src/main/java/com/jaeksoft/searchlib/scheduler/task/TaskQueryCheck.java b/src/main/java/com/jaeksoft/searchlib/scheduler/task/TaskQueryCheck.java index 3892fe58e..29b257558 100644 --- a/src/main/java/com/jaeksoft/searchlib/scheduler/task/TaskQueryCheck.java +++ b/src/main/java/com/jaeksoft/searchlib/scheduler/task/TaskQueryCheck.java @@ -131,7 +131,7 @@ public void execute(Client client, TaskProperties properties, try { taskLog.setInfo("Execute request " + searchTemplate); SearchResult searchResult = new SearchResult( - (AbstractResultSearch) client.request(searchRequest)); + (AbstractResultSearch) client.request(searchRequest)); if (jsonPath != null && jsonPath.length() > 0) { String json = JsonUtils.toJsonString(searchResult); JsonPath jsonPathCompile = JsonPath.compile(jsonPath); diff --git a/src/main/java/com/jaeksoft/searchlib/scheduler/task/TaskQueryXsltPost.java b/src/main/java/com/jaeksoft/searchlib/scheduler/task/TaskQueryXsltPost.java index 636e7a25f..75dbfef9c 100644 --- a/src/main/java/com/jaeksoft/searchlib/scheduler/task/TaskQueryXsltPost.java +++ b/src/main/java/com/jaeksoft/searchlib/scheduler/task/TaskQueryXsltPost.java @@ -160,7 +160,8 @@ public void execute(Client client, TaskProperties properties, + " not found"); searchRequest.setQueryString(queryString); taskLog.setInfo("Execute request " + searchTemplate); - AbstractResultSearch resultSearch = (AbstractResultSearch) client + @SuppressWarnings("unchecked") + AbstractResultSearch resultSearch = (AbstractResultSearch) client .request(searchRequest); if (resultSearch == null || resultSearch.getNumFound() == 0) { @@ -177,7 +178,7 @@ public void execute(Client client, TaskProperties properties, sw = new StringWriter(); pw = new PrintWriter(sw); taskLog.setInfo("Render XML"); - new RenderSearchXml(resultSearch).render(pw); + new RenderSearchXml(resultSearch).render(pw); pw.close(); pw = null; sw.close(); diff --git a/src/main/java/com/jaeksoft/searchlib/script/commands/SearchCommands.java b/src/main/java/com/jaeksoft/searchlib/script/commands/SearchCommands.java index f386e65af..046560492 100644 --- a/src/main/java/com/jaeksoft/searchlib/script/commands/SearchCommands.java +++ b/src/main/java/com/jaeksoft/searchlib/script/commands/SearchCommands.java @@ -55,7 +55,7 @@ protected SearchTemplateAbstract(CommandEnum commandEnum) { super(commandEnum); } - protected AbstractResultSearch search(ScriptCommandContext context, + protected AbstractResultSearch search(ScriptCommandContext context, String template, String query) throws ScriptException { try { Client client = (Client) context.getConfig(); @@ -66,7 +66,7 @@ protected AbstractResultSearch search(ScriptCommandContext context, AbstractSearchRequest searchRequest = (AbstractSearchRequest) request; if (!query.isEmpty()) searchRequest.setQueryString(query); - return (AbstractResultSearch) client.request(searchRequest); + return (AbstractResultSearch) client.request(searchRequest); } catch (SearchLibException e) { throw new ScriptException(e); } @@ -97,7 +97,7 @@ public void run(ScriptCommandContext context, String id, Variables documentVariables = new Variables(); context.addVariables(searchVariables, documentVariables); try { - AbstractResultSearch result = this.search(context, template, + AbstractResultSearch result = this.search(context, template, query); searchVariables.put("search:numfound", Integer.toString(result.getNumFound())); @@ -179,7 +179,8 @@ public void run(ScriptCommandContext context, String id, CommandEnum command = StringUtils.isEmpty(cmd) ? null : CommandEnum .find(cmd); - AbstractResultSearch result = this.search(context, template, query); + AbstractResultSearch result = this.search(context, template, + query); SearchResult searchResult = new SearchResult(result); try { Object object = jsonPath.read(JsonUtils diff --git a/src/main/java/com/jaeksoft/searchlib/snippet/SnippetField.java b/src/main/java/com/jaeksoft/searchlib/snippet/SnippetField.java index 5f4b552c1..1e95827a3 100644 --- a/src/main/java/com/jaeksoft/searchlib/snippet/SnippetField.java +++ b/src/main/java/com/jaeksoft/searchlib/snippet/SnippetField.java @@ -39,7 +39,7 @@ import com.jaeksoft.searchlib.function.expression.SyntaxError; import com.jaeksoft.searchlib.index.ReaderInterface; import com.jaeksoft.searchlib.query.ParseException; -import com.jaeksoft.searchlib.request.AbstractSearchRequest; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.schema.AbstractField; import com.jaeksoft.searchlib.schema.FieldValueItem; import com.jaeksoft.searchlib.schema.FieldValueOriginEnum; @@ -225,7 +225,7 @@ public final void reset() { indexAnalyzer = null; } - public void initSearchTerms(AbstractSearchRequest searchRequest) + public void initSearchTerms(AbstractLocalSearchRequest searchRequest) throws ParseException, SyntaxError, IOException, SearchLibException { synchronized (this) { if (snippetQueries != null) diff --git a/src/main/java/com/jaeksoft/searchlib/util/Pagination.java b/src/main/java/com/jaeksoft/searchlib/util/Pagination.java index 5ce0b6960..a7c13bb90 100644 --- a/src/main/java/com/jaeksoft/searchlib/util/Pagination.java +++ b/src/main/java/com/jaeksoft/searchlib/util/Pagination.java @@ -57,13 +57,13 @@ public Pagination(int totalCount, int currentCount, int pageSize, navPages.add(i); } - private Pagination(AbstractResultSearch result, + private Pagination(AbstractResultSearch result, AbstractSearchRequest searchRequest, int pagesArround) { this(result.getNumFound(), searchRequest.getStart(), searchRequest .getRows(), pagesArround); } - public Pagination(AbstractResultSearch result, int pagesArround) { + public Pagination(AbstractResultSearch result, int pagesArround) { this(result, result.getRequest(), pagesArround); } diff --git a/src/main/java/com/jaeksoft/searchlib/web/AutoCompletionServlet.java b/src/main/java/com/jaeksoft/searchlib/web/AutoCompletionServlet.java index 2a58a8d88..1d63014f2 100644 --- a/src/main/java/com/jaeksoft/searchlib/web/AutoCompletionServlet.java +++ b/src/main/java/com/jaeksoft/searchlib/web/AutoCompletionServlet.java @@ -70,7 +70,7 @@ private void query(ServletTransaction transaction, Client client, return; transaction.setResponseContentType("text/plain"); PrintWriter pw = transaction.getWriter("UTF-8"); - AbstractResultSearch result = autoCompItem.search(query, rows); + AbstractResultSearch result = autoCompItem.search(query, rows); if (result == null) return; if (result.getDocumentCount() <= 0) diff --git a/src/main/java/com/jaeksoft/searchlib/web/RendererServlet.java b/src/main/java/com/jaeksoft/searchlib/web/RendererServlet.java index 50a1ff263..282f986a7 100644 --- a/src/main/java/com/jaeksoft/searchlib/web/RendererServlet.java +++ b/src/main/java/com/jaeksoft/searchlib/web/RendererServlet.java @@ -151,7 +151,7 @@ protected void doRequest(ServletTransaction transaction) searchRequest .setStart(searchRequest.getRows() * (page - 1)); } - AbstractResultSearch result = (AbstractResultSearch) client + AbstractResultSearch result = (AbstractResultSearch) client .request(searchRequest); transaction.setRequestAttribute("result", result); if (result != null) { @@ -173,7 +173,7 @@ protected void doRequest(ServletTransaction transaction) facetRequest.setStart(searchRequest.getStart()); facetRequest.setRows(searchRequest.getRows()); renderer.configureAuthRequest(facetRequest, servletRequest); - AbstractResultSearch facetResult = (AbstractResultSearch) client + AbstractResultSearch facetResult = (AbstractResultSearch) client .request(facetRequest); transaction.setRequestAttribute("facetResult", facetResult); } diff --git a/src/main/java/com/jaeksoft/searchlib/web/SearchServlet.java b/src/main/java/com/jaeksoft/searchlib/web/SearchServlet.java index 319ec87e6..c5c6433b4 100644 --- a/src/main/java/com/jaeksoft/searchlib/web/SearchServlet.java +++ b/src/main/java/com/jaeksoft/searchlib/web/SearchServlet.java @@ -88,7 +88,7 @@ protected Render doQueryRequest(Client client, URISyntaxException, ClassNotFoundException, InterruptedException, SearchLibException, InstantiationException, IllegalAccessException { - AbstractResultSearch result = (AbstractResultSearch) client + AbstractResultSearch result = (AbstractResultSearch) client .request(searchRequest); return new RenderOpenSearch(result, serverURL, outputEncoding); diff --git a/src/main/java/com/jaeksoft/searchlib/web/controller/delete/DeleteController.java b/src/main/java/com/jaeksoft/searchlib/web/controller/delete/DeleteController.java index 5171d61b8..c987318d3 100644 --- a/src/main/java/com/jaeksoft/searchlib/web/controller/delete/DeleteController.java +++ b/src/main/java/com/jaeksoft/searchlib/web/controller/delete/DeleteController.java @@ -99,7 +99,7 @@ public void onCheck() throws IOException, ParseException, SyntaxError, InterruptedException, InstantiationException, IllegalAccessException { request.reset(); - int numFound = ((AbstractResultSearch) getClient().request(request)) + int numFound = ((AbstractResultSearch) getClient().request(request)) .getNumFound(); isChecked = true; new AlertController(numFound + " document(s) found.", @@ -114,7 +114,7 @@ public void onDelete() throws IOException, ParseException, SyntaxError, if (!isChecked) return; request.reset(); - int numFound = ((AbstractResultSearch) getClient().request(request)) + int numFound = ((AbstractResultSearch) getClient().request(request)) .getNumFound(); new DeleteAlert(numFound); } diff --git a/src/main/java/com/jaeksoft/searchlib/web/controller/query/QueryController.java b/src/main/java/com/jaeksoft/searchlib/web/controller/query/QueryController.java index 50257a093..654ba36f1 100644 --- a/src/main/java/com/jaeksoft/searchlib/web/controller/query/QueryController.java +++ b/src/main/java/com/jaeksoft/searchlib/web/controller/query/QueryController.java @@ -1,7 +1,7 @@ /** * License Agreement for OpenSearchServer * - * Copyright (C) 2008-2012 Emmanuel Keller / Jaeksoft + * Copyright (C) 2008-2015 Emmanuel Keller / Jaeksoft * * http://www.open-search-server.com * @@ -148,6 +148,10 @@ public boolean isEditingSearchField() throws SearchLibException { return isEditing(RequestTypeEnum.SearchFieldRequest); } + public boolean isEditingSearchMerged() throws SearchLibException { + return isEditing(RequestTypeEnum.SearchMergedRequest); + } + public boolean isNotEditingSearchField() throws SearchLibException { return !isEditingSearchField(); } diff --git a/src/main/java/com/jaeksoft/searchlib/web/controller/query/RequestsController.java b/src/main/java/com/jaeksoft/searchlib/web/controller/query/RequestsController.java new file mode 100644 index 000000000..c920fe91d --- /dev/null +++ b/src/main/java/com/jaeksoft/searchlib/web/controller/query/RequestsController.java @@ -0,0 +1,115 @@ +/** + * License Agreement for OpenSearchServer + * + * Copyright (C) 2008-2012 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.web.controller.query; + +import org.zkoss.bind.annotation.Command; +import org.zkoss.bind.annotation.GlobalCommand; +import org.zkoss.bind.annotation.NotifyChange; + +import com.jaeksoft.searchlib.Client; +import com.jaeksoft.searchlib.SearchLibException; +import com.jaeksoft.searchlib.request.RequestTypeEnum; +import com.jaeksoft.searchlib.request.SearchMergedRequest; +import com.jaeksoft.searchlib.request.SearchMergedRequest.RemoteRequest; + +public class RequestsController extends AbstractQueryController { + + private transient RemoteRequest currentRequest; + private transient RemoteRequest selectedRequest; + + public RequestsController() throws SearchLibException { + super(RequestTypeEnum.SearchMergedRequest); + } + + @Override + protected void reset() throws SearchLibException { + selectedRequest = null; + currentRequest = new RemoteRequest(); + } + + public RemoteRequest getCurrentRequest() { + synchronized (this) { + return currentRequest; + } + } + + @NotifyChange("*") + public void setSelectedRequest(RemoteRequest request) { + synchronized (this) { + selectedRequest = request; + currentRequest = new RemoteRequest(request); + } + } + + public boolean isRequestSelected() { + synchronized (this) { + return selectedRequest != null; + } + } + + public RemoteRequest getSelectedRequest() { + synchronized (this) { + return selectedRequest; + } + } + + private SearchMergedRequest getSearchMergedRequest() + throws SearchLibException { + return (SearchMergedRequest) getRequest(); + } + + @Command + @NotifyChange("*") + public void onRequestSave() throws SearchLibException { + synchronized (this) { + getSearchMergedRequest().save(selectedRequest, currentRequest); + onRequestCancel(); + } + } + + @Command + @NotifyChange("*") + public void onRequestRemove() throws SearchLibException { + synchronized (this) { + getSearchMergedRequest().save(selectedRequest, null); + onRequestCancel(); + } + } + + @Command + @NotifyChange("*") + public void onRequestCancel() throws SearchLibException { + synchronized (this) { + selectedRequest = null; + currentRequest = new RemoteRequest(); + } + } + + @Override + @GlobalCommand + public void eventSchemaChange(Client client) throws SearchLibException { + reset(); + } +} diff --git a/src/main/java/com/jaeksoft/searchlib/web/controller/query/ResultSearchController.java b/src/main/java/com/jaeksoft/searchlib/web/controller/query/ResultSearchController.java index 613eb6b3c..8efb6fb71 100644 --- a/src/main/java/com/jaeksoft/searchlib/web/controller/query/ResultSearchController.java +++ b/src/main/java/com/jaeksoft/searchlib/web/controller/query/ResultSearchController.java @@ -53,7 +53,7 @@ protected void reset() throws SearchLibException { public boolean getDocumentFound() throws SearchLibException { synchronized (this) { - AbstractResultSearch result = (AbstractResultSearch) getResult(); + AbstractResultSearch result = (AbstractResultSearch) getResult(); if (result == null) return false; return result.getDocumentCount() > 0; @@ -62,7 +62,7 @@ public boolean getDocumentFound() throws SearchLibException { public FacetList getFacetList() throws SearchLibException { synchronized (this) { - AbstractResultSearch result = (AbstractResultSearch) getResult(); + AbstractResultSearch result = (AbstractResultSearch) getResult(); if (result == null) return null; FacetList facetList = result.getFacetList(); @@ -86,7 +86,7 @@ public void exportSearchResultToCsv() throws Exception { Client client = getClient(); if (client == null) return; - AbstractResultSearch result = (AbstractResultSearch) getResult(); + AbstractResultSearch result = (AbstractResultSearch) getResult(); if (result == null) return; diff --git a/src/main/java/com/jaeksoft/searchlib/web/controller/schema/AutoCompletionComposer.java b/src/main/java/com/jaeksoft/searchlib/web/controller/schema/AutoCompletionComposer.java index 69b107c3e..3b9eb7768 100644 --- a/src/main/java/com/jaeksoft/searchlib/web/controller/schema/AutoCompletionComposer.java +++ b/src/main/java/com/jaeksoft/searchlib/web/controller/schema/AutoCompletionComposer.java @@ -211,7 +211,7 @@ public void onChanging( if (selectedItem == null) return; String[] resultArray = new String[0]; - AbstractResultSearch result = selectedItem.search(event.getValue(), + AbstractResultSearch result = selectedItem.search(event.getValue(), selectedItem.getRows()); if (result != null) { if (result.getDocumentCount() > 0) { diff --git a/src/main/java/com/jaeksoft/searchlib/webservice/autocompletion/AutoCompletionResult.java b/src/main/java/com/jaeksoft/searchlib/webservice/autocompletion/AutoCompletionResult.java index 912fdd571..b2563368f 100644 --- a/src/main/java/com/jaeksoft/searchlib/webservice/autocompletion/AutoCompletionResult.java +++ b/src/main/java/com/jaeksoft/searchlib/webservice/autocompletion/AutoCompletionResult.java @@ -51,7 +51,7 @@ public AutoCompletionResult() { terms = null; } - public AutoCompletionResult(AbstractResultSearch result) { + public AutoCompletionResult(AbstractResultSearch result) { super(true, null); if (result == null) return; diff --git a/src/main/java/com/jaeksoft/searchlib/webservice/query/document/DocumentResult.java b/src/main/java/com/jaeksoft/searchlib/webservice/query/document/DocumentResult.java index 3c3f8dd7e..ffd4d110b 100644 --- a/src/main/java/com/jaeksoft/searchlib/webservice/query/document/DocumentResult.java +++ b/src/main/java/com/jaeksoft/searchlib/webservice/query/document/DocumentResult.java @@ -165,7 +165,7 @@ public final static List populateDocumentList( throws SearchLibException { int start = result.getRequestStart(); int end = result.getDocumentCount() + result.getRequestStart(); - AbstractResultSearch resultSearch = result instanceof AbstractResultSearch ? (AbstractResultSearch) result + AbstractResultSearch resultSearch = result instanceof AbstractResultSearch ? (AbstractResultSearch) result : null; for (int i = start; i < end; i++) { ResultDocument resultDocument = result.getDocument(i, null); diff --git a/src/main/java/com/jaeksoft/searchlib/webservice/query/search/FacetResult.java b/src/main/java/com/jaeksoft/searchlib/webservice/query/search/FacetResult.java index 45ab0c099..b74a09a89 100644 --- a/src/main/java/com/jaeksoft/searchlib/webservice/query/search/FacetResult.java +++ b/src/main/java/com/jaeksoft/searchlib/webservice/query/search/FacetResult.java @@ -37,7 +37,6 @@ import com.jaeksoft.searchlib.facet.FacetItem; import com.jaeksoft.searchlib.facet.FacetList; import com.jaeksoft.searchlib.result.AbstractResultSearch; -import com.jaeksoft.searchlib.webservice.query.search.FacetFieldItem; @XmlAccessorType(XmlAccessType.PUBLIC_MEMBER) public class FacetResult { @@ -54,7 +53,7 @@ public FacetResult() { } - public FacetResult(AbstractResultSearch result, String field) { + public FacetResult(AbstractResultSearch result, String field) { terms = new ArrayList(); FacetList facetList = result.getFacetList(); fieldName = field; diff --git a/src/main/java/com/jaeksoft/searchlib/webservice/query/search/SearchImpl.java b/src/main/java/com/jaeksoft/searchlib/webservice/query/search/SearchImpl.java index 789b32444..ef8e179a1 100644 --- a/src/main/java/com/jaeksoft/searchlib/webservice/query/search/SearchImpl.java +++ b/src/main/java/com/jaeksoft/searchlib/webservice/query/search/SearchImpl.java @@ -78,7 +78,7 @@ public SearchResult searchPatternTemplate(String index, String login, if (query != null) query.apply(searchRequest); return new SearchResult( - (AbstractResultSearch) client.request(searchRequest)); + (AbstractResultSearch) client.request(searchRequest)); } catch (SearchLibException e) { throw new CommonServiceException(e); } @@ -103,7 +103,7 @@ public SearchResult searchFieldTemplate(String index, String login, if (query != null) query.apply(searchRequest); return new SearchResult( - (AbstractResultSearch) client.request(searchRequest)); + (AbstractResultSearch) client.request(searchRequest)); } catch (SearchLibException e) { throw new CommonServiceException(e); } @@ -130,7 +130,7 @@ public SearchResult searchPattern(String index, String login, String key, if (query != null) query.apply(searchRequest); return new SearchResult( - (AbstractResultSearch) client.request(searchRequest)); + (AbstractResultSearch) client.request(searchRequest)); } catch (InterruptedException e) { throw new CommonServiceException(e); } catch (IOException e) { @@ -151,7 +151,7 @@ public SearchResult searchField(String index, String login, String key, if (query != null) query.apply(searchRequest); return new SearchResult( - (AbstractResultSearch) client.request(searchRequest)); + (AbstractResultSearch) client.request(searchRequest)); } catch (InterruptedException e) { throw new CommonServiceException(e); } catch (IOException e) { diff --git a/src/main/java/com/jaeksoft/searchlib/webservice/query/search/SearchQueryBatch.java b/src/main/java/com/jaeksoft/searchlib/webservice/query/search/SearchQueryBatch.java index 7e3d10ca7..c03b230c8 100644 --- a/src/main/java/com/jaeksoft/searchlib/webservice/query/search/SearchQueryBatch.java +++ b/src/main/java/com/jaeksoft/searchlib/webservice/query/search/SearchQueryBatch.java @@ -140,7 +140,7 @@ else if (query instanceof SearchPatternQuery) searchRequest = new SearchPatternRequest(client); query.apply(searchRequest); SearchResult searchResult = new SearchResult( - (AbstractResultSearch) client.request(searchRequest)); + (AbstractResultSearch) client.request(searchRequest)); searchResults.add(searchResult); if (mode != null) { switch (mode) { diff --git a/src/main/java/com/jaeksoft/searchlib/webservice/query/search/SearchResult.java b/src/main/java/com/jaeksoft/searchlib/webservice/query/search/SearchResult.java index 9cf608a46..b5e913d61 100644 --- a/src/main/java/com/jaeksoft/searchlib/webservice/query/search/SearchResult.java +++ b/src/main/java/com/jaeksoft/searchlib/webservice/query/search/SearchResult.java @@ -37,6 +37,7 @@ import com.jaeksoft.searchlib.facet.FacetField; import com.jaeksoft.searchlib.function.expression.SyntaxError; import com.jaeksoft.searchlib.query.ParseException; +import com.jaeksoft.searchlib.request.AbstractLocalSearchRequest; import com.jaeksoft.searchlib.request.AbstractSearchRequest; import com.jaeksoft.searchlib.result.AbstractResultSearch; import com.jaeksoft.searchlib.webservice.CommonResult; @@ -86,13 +87,14 @@ public SearchResult() { maxScore = 0; } - public SearchResult(AbstractResultSearch result) { + public SearchResult(AbstractResultSearch result) { super(true, null); try { AbstractSearchRequest searchRequest = result.getRequest(); documents = new ArrayList(0); facets = new ArrayList(0); - query = searchRequest.getQueryParsed(); + query = searchRequest instanceof AbstractLocalSearchRequest ? ((AbstractLocalSearchRequest) searchRequest) + .getQueryParsed() : searchRequest.getQueryString(); start = searchRequest.getStart(); rows = searchRequest.getRows(); numFound = result.getNumFound(); diff --git a/src/main/webapp/WEB-INF/jsp/renderer/doclist.jsp b/src/main/webapp/WEB-INF/jsp/renderer/doclist.jsp index bf727cdb2..d5c47d93a 100644 --- a/src/main/webapp/WEB-INF/jsp/renderer/doclist.jsp +++ b/src/main/webapp/WEB-INF/jsp/renderer/doclist.jsp @@ -7,7 +7,7 @@ import="com.jaeksoft.searchlib.renderer.field.RendererWidgetType"%> <%@ page import="com.jaeksoft.searchlib.renderer.Renderer"%> <% - AbstractResultSearch result = (AbstractResultSearch) request + AbstractResultSearch result = (AbstractResultSearch) request .getAttribute("result"); if (result != null) { Renderer renderer = (Renderer) request.getAttribute("renderer"); diff --git a/src/main/webapp/WEB-INF/zul/query/index.zul b/src/main/webapp/WEB-INF/zul/query/index.zul index fad99c3ef..d3c8b3fe5 100644 --- a/src/main/webapp/WEB-INF/zul/query/index.zul +++ b/src/main/webapp/WEB-INF/zul/query/index.zul @@ -1,6 +1,6 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/zul/query/search/requests.zul b/src/main/webapp/WEB-INF/zul/query/search/requests.zul new file mode 100644 index 000000000..a86105178 --- /dev/null +++ b/src/main/webapp/WEB-INF/zul/query/search/requests.zul @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + +