Search in sources :

Example 1 with SearchRenderData

use of org.codelibs.fess.entity.SearchRenderData in project fess by codelibs.

the class ApiAdminSearchlistAction method docs.

// ===================================================================================
// Search Execute
// ==============
// GET /api/admin/searchlist/docs
// POST /api/admin/searchlist/docs
@Execute
public JsonResponse<ApiResult> docs(final SearchBody body) {
    validateApi(body, messages -> {
    });
    if (StringUtil.isBlank(body.q)) {
        // query matches on all documents.
        body.q = Constants.MATCHES_ALL_QUERY;
    }
    final SearchRenderData renderData = new SearchRenderData();
    body.initialize();
    try {
        searchHelper.search(body, renderData, getUserBean());
        return asJson(new ApiDocsResponse().renderData(renderData).status(Status.OK).result());
    } catch (final InvalidQueryException e) {
        if (logger.isDebugEnabled()) {
            logger.debug(e.getMessage(), e);
        }
        throwValidationErrorApi(e.getMessageCode());
    } catch (final ResultOffsetExceededException e) {
        if (logger.isDebugEnabled()) {
            logger.debug(e.getMessage(), e);
        }
        throwValidationErrorApi(messages -> messages.addErrorsResultSizeExceeded(GLOBAL));
    }
    throwValidationErrorApi(messages -> messages.addErrorsInvalidQueryUnknown(GLOBAL));
    // ignore
    return null;
}
Also used : Constants(org.codelibs.fess.Constants) AdminSearchlistAction.getDoc(org.codelibs.fess.app.web.admin.searchlist.AdminSearchlistAction.getDoc) SearchEngineClient(org.codelibs.fess.es.client.SearchEngineClient) ApiDeleteResponse(org.codelibs.fess.app.web.api.ApiResult.ApiDeleteResponse) ResultOffsetExceededException(org.codelibs.fess.exception.ResultOffsetExceededException) AdminSearchlistAction.validateFields(org.codelibs.fess.app.web.admin.searchlist.AdminSearchlistAction.validateFields) ApiResult(org.codelibs.fess.app.web.api.ApiResult) Status(org.codelibs.fess.app.web.api.ApiResult.Status) CrudMode(org.codelibs.fess.app.web.CrudMode) Map(java.util.Map) ApiResponse(org.codelibs.fess.app.web.api.ApiResult.ApiResponse) SearchHelper(org.codelibs.fess.helper.SearchHelper) SearchRenderData(org.codelibs.fess.entity.SearchRenderData) QueryBuilders(org.opensearch.index.query.QueryBuilders) FessApiAdminAction(org.codelibs.fess.app.web.api.admin.FessApiAdminAction) ApiDocResponse(org.codelibs.fess.app.web.api.ApiResult.ApiDocResponse) Resource(javax.annotation.Resource) StringUtil(org.codelibs.core.lang.StringUtil) JsonResponse(org.lastaflute.web.response.JsonResponse) ApiUpdateResponse(org.codelibs.fess.app.web.api.ApiResult.ApiUpdateResponse) Logger(org.apache.logging.log4j.Logger) QueryBuilder(org.opensearch.index.query.QueryBuilder) ComponentUtil(org.codelibs.fess.util.ComponentUtil) ApiDocsResponse(org.codelibs.fess.app.web.api.ApiResult.ApiDocsResponse) Execute(org.lastaflute.web.Execute) InvalidQueryException(org.codelibs.fess.exception.InvalidQueryException) LogManager(org.apache.logging.log4j.LogManager) SearchRenderData(org.codelibs.fess.entity.SearchRenderData) ResultOffsetExceededException(org.codelibs.fess.exception.ResultOffsetExceededException) ApiDocsResponse(org.codelibs.fess.app.web.api.ApiResult.ApiDocsResponse) InvalidQueryException(org.codelibs.fess.exception.InvalidQueryException) Execute(org.lastaflute.web.Execute)

Example 2 with SearchRenderData

use of org.codelibs.fess.entity.SearchRenderData in project fess by codelibs.

the class JsonApiManager method processSearchRequest.

protected void processSearchRequest(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) {
    final SearchHelper searchHelper = ComponentUtil.getSearchHelper();
    final FessConfig fessConfig = ComponentUtil.getFessConfig();
    final RelatedQueryHelper relatedQueryHelper = ComponentUtil.getRelatedQueryHelper();
    final RelatedContentHelper relatedContentHelper = ComponentUtil.getRelatedContentHelper();
    int status = 0;
    Exception err = null;
    String query = null;
    // TODO replace response stream
    final StringBuilder buf = new StringBuilder(1000);
    request.setAttribute(Constants.SEARCH_LOG_ACCESS_TYPE, Constants.SEARCH_LOG_ACCESS_TYPE_JSON);
    try {
        final SearchRenderData data = new SearchRenderData();
        final JsonRequestParams params = new JsonRequestParams(request, fessConfig);
        query = params.getQuery();
        searchHelper.search(params, data, OptionalThing.empty());
        final String execTime = data.getExecTime();
        final String queryTime = Long.toString(data.getQueryTime());
        final String pageSize = Integer.toString(data.getPageSize());
        final String currentPageNumber = Integer.toString(data.getCurrentPageNumber());
        final String allRecordCount = Long.toString(data.getAllRecordCount());
        final String allRecordCountRelation = data.getAllRecordCountRelation();
        final String allPageCount = Integer.toString(data.getAllPageCount());
        final List<Map<String, Object>> documentItems = data.getDocumentItems();
        final FacetResponse facetResponse = data.getFacetResponse();
        final String queryId = data.getQueryId();
        final String highlightParams = data.getAppendHighlightParams();
        final boolean nextPage = data.isExistNextPage();
        final boolean prevPage = data.isExistPrevPage();
        final long startRecordNumber = data.getCurrentStartRecordNumber();
        final long endRecordNumber = data.getCurrentEndRecordNumber();
        final List<String> pageNumbers = data.getPageNumberList();
        final boolean partial = data.isPartialResults();
        final String searchQuery = data.getSearchQuery();
        final long requestedTime = data.getRequestedTime();
        buf.append("\"q\":");
        buf.append(escapeJson(query));
        buf.append(",\"query_id\":");
        buf.append(escapeJson(queryId));
        buf.append(",\"exec_time\":");
        buf.append(execTime);
        buf.append(",\"query_time\":");
        buf.append(queryTime);
        buf.append(',');
        buf.append("\"page_size\":");
        buf.append(pageSize);
        buf.append(',');
        buf.append("\"page_number\":");
        buf.append(currentPageNumber);
        buf.append(',');
        buf.append("\"record_count\":");
        buf.append(allRecordCount);
        buf.append(',');
        buf.append("\"record_count_relation\":");
        buf.append(escapeJson(allRecordCountRelation));
        buf.append(',');
        buf.append("\"page_count\":");
        buf.append(allPageCount);
        buf.append(",\"highlight_params\":");
        buf.append(escapeJson(highlightParams));
        buf.append(",\"next_page\":");
        buf.append(escapeJson(nextPage));
        buf.append(",\"prev_page\":");
        buf.append(escapeJson(prevPage));
        buf.append(",\"start_record_number\":");
        buf.append(startRecordNumber);
        buf.append(",\"end_record_number\":");
        buf.append(escapeJson(endRecordNumber));
        buf.append(",\"page_numbers\":");
        buf.append(escapeJson(pageNumbers));
        buf.append(",\"partial\":");
        buf.append(escapeJson(partial));
        buf.append(",\"search_query\":");
        buf.append(escapeJson(searchQuery));
        buf.append(",\"requested_time\":");
        buf.append(requestedTime);
        final String[] relatedQueries = relatedQueryHelper.getRelatedQueries(params.getQuery());
        buf.append(",\"related_query\":");
        buf.append(escapeJson(relatedQueries));
        final String[] relatedContents = relatedContentHelper.getRelatedContents(params.getQuery());
        buf.append(",\"related_contents\":");
        buf.append(escapeJson(relatedContents));
        buf.append(',');
        buf.append("\"result\":[");
        if (!documentItems.isEmpty()) {
            boolean first1 = true;
            for (final Map<String, Object> document : documentItems) {
                if (!first1) {
                    buf.append(',');
                } else {
                    first1 = false;
                }
                buf.append('{');
                boolean first2 = true;
                for (final Map.Entry<String, Object> entry : document.entrySet()) {
                    final String name = entry.getKey();
                    if (StringUtil.isNotBlank(name) && entry.getValue() != null && ComponentUtil.getQueryHelper().isApiResponseField(name)) {
                        if (!first2) {
                            buf.append(',');
                        } else {
                            first2 = false;
                        }
                        buf.append(escapeJson(name));
                        buf.append(':');
                        buf.append(escapeJson(entry.getValue()));
                    }
                }
                buf.append('}');
            }
        }
        buf.append(']');
        if (facetResponse != null && facetResponse.hasFacetResponse()) {
            // facet field
            buf.append(',');
            buf.append("\"facet_field\":[");
            if (facetResponse.getFieldList() != null) {
                boolean first1 = true;
                for (final Field field : facetResponse.getFieldList()) {
                    if (!first1) {
                        buf.append(',');
                    } else {
                        first1 = false;
                    }
                    buf.append("{\"name\":");
                    buf.append(escapeJson(field.getName()));
                    buf.append(",\"result\":[");
                    boolean first2 = true;
                    for (final Map.Entry<String, Long> entry : field.getValueCountMap().entrySet()) {
                        if (!first2) {
                            buf.append(',');
                        } else {
                            first2 = false;
                        }
                        buf.append("{\"value\":");
                        buf.append(escapeJson(entry.getKey()));
                        buf.append(",\"count\":");
                        buf.append(entry.getValue());
                        buf.append('}');
                    }
                    buf.append(']');
                    buf.append('}');
                }
            }
            buf.append(']');
            // facet q
            buf.append(',');
            buf.append("\"facet_query\":[");
            if (facetResponse.getQueryCountMap() != null) {
                boolean first1 = true;
                for (final Map.Entry<String, Long> entry : facetResponse.getQueryCountMap().entrySet()) {
                    if (!first1) {
                        buf.append(',');
                    } else {
                        first1 = false;
                    }
                    buf.append("{\"value\":");
                    buf.append(escapeJson(entry.getKey()));
                    buf.append(",\"count\":");
                    buf.append(entry.getValue());
                    buf.append('}');
                }
            }
            buf.append(']');
        }
    } catch (final Exception e) {
        status = 1;
        err = e;
        if (logger.isDebugEnabled()) {
            logger.debug("Failed to process a search request.", e);
        }
    }
    writeJsonResponse(status, buf.toString(), err);
}
Also used : RelatedContentHelper(org.codelibs.fess.helper.RelatedContentHelper) SearchHelper(org.codelibs.fess.helper.SearchHelper) FessConfig(org.codelibs.fess.mylasta.direction.FessConfig) RelatedQueryHelper(org.codelibs.fess.helper.RelatedQueryHelper) IORuntimeException(org.codelibs.core.exception.IORuntimeException) ServletException(javax.servlet.ServletException) WebApiException(org.codelibs.fess.exception.WebApiException) IOException(java.io.IOException) Field(org.codelibs.fess.util.FacetResponse.Field) SearchRenderData(org.codelibs.fess.entity.SearchRenderData) FacetResponse(org.codelibs.fess.util.FacetResponse) HashMap(java.util.HashMap) Map(java.util.Map)

Example 3 with SearchRenderData

use of org.codelibs.fess.entity.SearchRenderData in project fess by codelibs.

the class ViewHelper method getCachedFacetResponse.

public FacetResponse getCachedFacetResponse(final String query) {
    final OptionalThing<FessUserBean> userBean = ComponentUtil.getComponent(FessLoginAssist.class).getSavedUserBean();
    final String permissionKey = userBean.map(user -> StreamUtil.stream(user.getPermissions()).get(stream -> stream.sorted().distinct().collect(Collectors.joining("\n")))).orElse(StringUtil.EMPTY);
    try {
        return facetCache.get(query + "\n" + permissionKey, () -> {
            final SearchHelper searchHelper = ComponentUtil.getSearchHelper();
            final SearchForm params = new SearchForm() {

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

                @Override
                public int getStartPosition() {
                    return 0;
                }
            };
            params.q = query;
            final SearchRenderData data = new SearchRenderData();
            searchHelper.search(params, data, userBean);
            if (logger.isDebugEnabled()) {
                logger.debug("loaded facet data: {}", data);
            }
            return data.getFacetResponse();
        });
    } catch (final ExecutionException e) {
        throw new FessSystemException("Cannot load facet from cache.", e);
    }
}
Also used : Constants(org.codelibs.fess.Constants) BufferedInputStream(java.io.BufferedInputStream) URLDecoder(java.net.URLDecoder) Date(java.util.Date) OptionalThing(org.dbflute.optional.OptionalThing) StringUtils(org.apache.commons.lang3.StringUtils) ActionRuntime(org.lastaflute.web.ruts.process.ActionRuntime) LaResponseUtil(org.lastaflute.web.util.LaResponseUtil) FessConfig(org.codelibs.fess.mylasta.direction.FessConfig) StreamResponse(org.lastaflute.web.response.StreamResponse) StreamUtil.split(org.codelibs.core.stream.StreamUtil.split) Matcher(java.util.regex.Matcher) StreamUtil(org.codelibs.core.stream.StreamUtil) Locale(java.util.Locale) Map(java.util.Map) LaFunctions(org.lastaflute.taglib.function.LaFunctions) SearchRenderData(org.codelibs.fess.entity.SearchRenderData) HttpSession(javax.servlet.http.HttpSession) Context(com.github.jknack.handlebars.Context) FacetQueryView(org.codelibs.fess.entity.FacetQueryView) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) CoreLibConstants(org.codelibs.core.CoreLibConstants) Collectors(java.util.stream.Collectors) ActionResponse(org.lastaflute.web.response.ActionResponse) List(java.util.List) Logger(org.apache.logging.log4j.Logger) ComponentUtil(org.codelibs.fess.util.ComponentUtil) PostConstruct(javax.annotation.PostConstruct) LaServletContextUtil(org.lastaflute.web.util.LaServletContextUtil) FileTemplateLoader(com.github.jknack.handlebars.io.FileTemplateLoader) Pattern(java.util.regex.Pattern) CacheBuilder(com.google.common.cache.CacheBuilder) UnsupportedEncodingException(java.io.UnsupportedEncodingException) ResponseData(org.codelibs.fess.crawler.entity.ResponseData) DocumentUtil(org.codelibs.fess.util.DocumentUtil) FessSystemException(org.codelibs.fess.exception.FessSystemException) HighlightField(org.opensearch.search.fetch.subphase.highlight.HighlightField) HashMap(java.util.HashMap) ClientAbortException(org.apache.catalina.connector.ClientAbortException) Function(java.util.function.Function) CrawlingConfig(org.codelibs.fess.es.config.exentity.CrawlingConfig) LaRequestUtil(org.lastaflute.web.util.LaRequestUtil) ArrayList(java.util.ArrayList) CrawlerClient(org.codelibs.fess.crawler.client.CrawlerClient) UserAgentType(org.codelibs.fess.helper.UserAgentHelper.UserAgentType) HashSet(java.util.HashSet) FessUserBean(org.codelibs.fess.mylasta.action.FessUserBean) ResourceUtil(org.codelibs.fess.util.ResourceUtil) HttpServletRequest(javax.servlet.http.HttpServletRequest) Handlebars(com.github.jknack.handlebars.Handlebars) CharUtil(org.codelibs.fess.crawler.util.CharUtil) DynamicProperties(org.codelibs.core.misc.DynamicProperties) StringUtil(org.codelibs.core.lang.StringUtil) IOException(java.io.IOException) StringEscapeUtils(org.apache.commons.text.StringEscapeUtils) FacetResponse(org.codelibs.fess.util.FacetResponse) SessionTrackingMode(javax.servlet.SessionTrackingMode) File(java.io.File) CloseableUtil(org.codelibs.core.io.CloseableUtil) ExecutionException(java.util.concurrent.ExecutionException) TimeUnit(java.util.concurrent.TimeUnit) Consumer(java.util.function.Consumer) SearchForm(org.codelibs.fess.app.web.base.SearchForm) URLEncoder(java.net.URLEncoder) FessLoginAssist(org.codelibs.fess.app.web.base.login.FessLoginAssist) ServletContext(javax.servlet.ServletContext) HighlightInfo(org.codelibs.fess.entity.HighlightInfo) SimpleDateFormat(com.ibm.icu.text.SimpleDateFormat) Cache(com.google.common.cache.Cache) LogManager(org.apache.logging.log4j.LogManager) RequestDataBuilder(org.codelibs.fess.crawler.builder.RequestDataBuilder) CrawlerClientFactory(org.codelibs.fess.crawler.client.CrawlerClientFactory) Text(org.opensearch.common.text.Text) InputStream(java.io.InputStream) Template(com.github.jknack.handlebars.Template) FessUserBean(org.codelibs.fess.mylasta.action.FessUserBean) SearchRenderData(org.codelibs.fess.entity.SearchRenderData) ExecutionException(java.util.concurrent.ExecutionException) SearchForm(org.codelibs.fess.app.web.base.SearchForm) FessLoginAssist(org.codelibs.fess.app.web.base.login.FessLoginAssist) FessSystemException(org.codelibs.fess.exception.FessSystemException)

Example 4 with SearchRenderData

use of org.codelibs.fess.entity.SearchRenderData in project fess by codelibs.

the class GsaApiManager method processSearchRequest.

protected void processSearchRequest(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) {
    final SearchService searchService = ComponentUtil.getComponent(SearchService.class);
    final FessConfig fessConfig = ComponentUtil.getFessConfig();
    int status = 0;
    String errMsg = StringUtil.EMPTY;
    String query = null;
    // TODO replace response stream
    final StringBuilder buf = new StringBuilder(1000);
    request.setAttribute(Constants.SEARCH_LOG_ACCESS_TYPE, Constants.SEARCH_LOG_ACCESS_TYPE_XML);
    boolean xmlDtd = false;
    try {
        final SearchRenderData data = new SearchRenderData();
        final GsaRequestParams params = new GsaRequestParams(request, fessConfig);
        query = params.getQuery();
        request.setAttribute(Constants.REQUEST_QUERIES, query);
        searchService.search(params, data, OptionalThing.empty());
        final String execTime = data.getExecTime();
        final long allRecordCount = data.getAllRecordCount();
        final List<Map<String, Object>> documentItems = data.getDocumentItems();
        final List<String> getFields = new ArrayList<>();
        // meta tags should be returned
        final String getFieldsParam = request.getParameter("getfields");
        if (StringUtil.isNotBlank(getFieldsParam)) {
            getFields.addAll(Arrays.asList(getFieldsParam.split("\\.")));
        }
        // DTD
        if ("xml".equals(request.getParameter("output"))) {
            xmlDtd = true;
        }
        final StringBuilder requestUri = new StringBuilder(request.getRequestURI());
        if (request.getQueryString() != null) {
            requestUri.append("?").append(request.getQueryString());
        }
        final String uriQueryString = requestUri.toString();
        // Input/Output encoding
        final String ie = request.getCharacterEncoding();
        final String oe = "UTF-8";
        // IP address
        final String ip = ComponentUtil.getViewHelper().getClientIp(request);
        final String start = request.getParameter("start");
        long startNumber = 1;
        if (StringUtil.isNotBlank(start)) {
            startNumber = Long.parseLong(start) + 1;
        }
        long endNumber = startNumber + data.getPageSize() - 1;
        if (endNumber > allRecordCount) {
            endNumber = allRecordCount;
        }
        buf.append("<Q>");
        buf.append(escapeXml(query));
        buf.append("</Q>");
        buf.append("<TM>");
        buf.append(execTime);
        buf.append("</TM>");
        for (final Entry<String, String[]> entry : request.getParameterMap().entrySet()) {
            final String[] values = entry.getValue();
            if (values == null) {
                continue;
            }
            final String key = entry.getKey();
            for (final String value : values) {
                buf.append("<PARAM name=\"");
                buf.append(key);
                buf.append("\" value=\"");
                buf.append(value);
                buf.append("\" original_value=\"");
                buf.append(URLEncoder.encode(value, Constants.UTF_8));
                buf.append("\"/>");
            }
        }
        buf.append("<PARAM name=\"ie\" value=\"");
        buf.append(ie);
        buf.append("\" original_value=\"");
        buf.append(URLEncoder.encode(ie, Constants.UTF_8));
        buf.append("\"/>");
        buf.append("<PARAM name=\"oe\" value=\"");
        buf.append(oe);
        buf.append("\" original_value=\"");
        buf.append(URLEncoder.encode(ie, Constants.UTF_8));
        buf.append("\"/>");
        buf.append("<PARAM name=\"ip\" value=\"");
        buf.append(ip);
        buf.append("\" original_value=\"");
        buf.append(URLEncoder.encode(ie, Constants.UTF_8));
        buf.append("\"/>");
        if (!documentItems.isEmpty()) {
            buf.append("<RES SN=\"");
            buf.append(startNumber);
            buf.append("\" EN=\"");
            buf.append(endNumber);
            buf.append("\">");
            buf.append("<M>");
            buf.append(allRecordCount);
            buf.append("</M>");
            if (endNumber < allRecordCount) {
                buf.append("<NB>");
                buf.append("<NU>");
                buf.append(escapeXml(uriQueryString.replaceFirst("start=([^&]+)", "start=" + endNumber)));
                buf.append("</NU>");
                buf.append("</NB>");
            }
            long recordNumber = startNumber;
            for (final Map<String, Object> document : documentItems) {
                buf.append("<R N=\"");
                buf.append(recordNumber);
                buf.append("\">");
                final String url = (String) document.remove("url");
                document.put("UE", url);
                document.put("U", URLDecoder.decode(url, Constants.UTF_8));
                document.put("T", document.remove("title"));
                final float score = Float.parseFloat((String) document.remove("boost"));
                document.put("RK", (int) (score * 10));
                document.put("S", ((String) document.remove("content_description")).replaceAll("<(/*)em>", "<$1b>"));
                document.put("LANG", document.remove("lang"));
                for (final Map.Entry<String, Object> entry : document.entrySet()) {
                    final String name = entry.getKey();
                    if (StringUtil.isNotBlank(name) && entry.getValue() != null && ComponentUtil.getQueryHelper().isApiResponseField(name)) {
                        if (name.startsWith(gsaMetaPrefix)) {
                            final String tagName = name.replaceAll("^" + gsaMetaPrefix, "").replaceAll(GSA_META_SUFFIX + "\\z", "");
                            if (getFields != null && getFields.contains(tagName)) {
                                buf.append("<MT N=\"");
                                buf.append(tagName);
                                buf.append("\" V=\"");
                                buf.append(escapeXml(entry.getValue().toString()));
                                buf.append("\"/>");
                            }
                        } else {
                            final String tagName = name;
                            buf.append('<');
                            buf.append(tagName);
                            buf.append('>');
                            buf.append(escapeXml(entry.getValue()));
                            buf.append("</");
                            buf.append(tagName);
                            buf.append('>');
                        }
                    }
                }
                buf.append("<HAS>");
                buf.append("<L/>");
                buf.append("<C SZ=\"");
                buf.append(Long.parseLong((String) document.remove("content_length")) / 1000);
                buf.append("k\" CID=\"");
                buf.append(document.remove("doc_id"));
                buf.append("\" ENC=\"");
                String charset = (String) document.remove("charset_s");
                if (StringUtil.isNotBlank(charset)) {
                    buf.append(charset);
                } else {
                    charset = (String) document.remove("contentType_s");
                    if (StringUtil.isNotBlank(charset)) {
                        final Matcher m = Pattern.compile(".*;\\s*charset=(.+)").matcher(charset);
                        if (m.matches()) {
                            charset = m.group(1);
                            buf.append(charset);
                        }
                    }
                }
                buf.append("\"/>");
                buf.append("</HAS>");
                buf.append("</R>");
                recordNumber++;
            }
            buf.append("</RES>");
        }
    } catch (final Exception e) {
        status = 1;
        errMsg = e.getMessage();
        if (errMsg == null) {
            errMsg = e.getClass().getName();
        }
        if (logger.isDebugEnabled()) {
            logger.debug("Failed to process a search request.", e);
        }
        if (e instanceof InvalidAccessTokenException) {
            final InvalidAccessTokenException iate = (InvalidAccessTokenException) e;
            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
            response.setHeader("WWW-Authenticate", "Bearer error=\"" + iate.getType() + "\"");
        }
    }
    writeXmlResponse(status, xmlDtd, buf.toString(), errMsg);
}
Also used : Matcher(java.util.regex.Matcher) ArrayList(java.util.ArrayList) FessConfig(org.codelibs.fess.mylasta.direction.FessConfig) ServletException(javax.servlet.ServletException) InvalidAccessTokenException(org.codelibs.fess.exception.InvalidAccessTokenException) IOException(java.io.IOException) InvalidAccessTokenException(org.codelibs.fess.exception.InvalidAccessTokenException) SearchService(org.codelibs.fess.app.service.SearchService) SearchRenderData(org.codelibs.fess.entity.SearchRenderData) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

Map (java.util.Map)4 SearchRenderData (org.codelibs.fess.entity.SearchRenderData)4 IOException (java.io.IOException)3 HashMap (java.util.HashMap)3 FessConfig (org.codelibs.fess.mylasta.direction.FessConfig)3 ArrayList (java.util.ArrayList)2 Matcher (java.util.regex.Matcher)2 LogManager (org.apache.logging.log4j.LogManager)2 Logger (org.apache.logging.log4j.Logger)2 StringUtil (org.codelibs.core.lang.StringUtil)2 Constants (org.codelibs.fess.Constants)2 SearchHelper (org.codelibs.fess.helper.SearchHelper)2 ComponentUtil (org.codelibs.fess.util.ComponentUtil)2 FacetResponse (org.codelibs.fess.util.FacetResponse)2 Context (com.github.jknack.handlebars.Context)1 Handlebars (com.github.jknack.handlebars.Handlebars)1 Template (com.github.jknack.handlebars.Template)1 FileTemplateLoader (com.github.jknack.handlebars.io.FileTemplateLoader)1 Cache (com.google.common.cache.Cache)1 CacheBuilder (com.google.common.cache.CacheBuilder)1