/** * {@inheritDoc} */ protected NamedList doAnalysis(SolrQueryRequest req) throws Exception { FieldAnalysisRequest analysisRequest = resolveAnalysisRequest(req); IndexSchema indexSchema = req.getCore().getSchema(); return handleAnalysisRequest(analysisRequest, indexSchema); }
@Override public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception { SecureRequestHandlerUtil.checkSentryCollection(req, SecureRequestHandlerUtil.QUERY_ONLY, getClass().getName()); super.handleRequestBody(req, rsp); } }
String queryValue = analysisRequest.getQuery(); if (queryValue != null && analysisRequest.isShowMatch()) { List<Token> tokens = analyzeValue(queryValue, fieldType.getQueryAnalyzer()); for (Token token : tokens) { termsToMatch.add(token.term()); if (analysisRequest.getFieldValue() != null) { AnalysisContext context = new AnalysisContext(fieldName, fieldType, fieldType.getAnalyzer(), termsToMatch); NamedList analyzedTokens = analyzeValue(analysisRequest.getFieldValue(), context); analyzeResults.add("index", analyzedTokens); NamedList analyzedTokens = analyzeValue(analysisRequest.getQuery(), context); analyzeResults.add("query", analyzedTokens);
/** * Handles the resolved analysis request and returns the analysis breakdown response as a named list. * * @param request The request to handle. * @param schema The index schema. * * @return The analysis breakdown as a named list. */ protected NamedList<NamedList> handleAnalysisRequest(FieldAnalysisRequest request, IndexSchema schema) { NamedList<NamedList> analysisResults = new SimpleOrderedMap<NamedList>(); NamedList<NamedList> fieldTypeAnalysisResults = new SimpleOrderedMap<NamedList>(); if (request.getFieldTypes() != null) { for (String fieldTypeName : request.getFieldTypes()) { FieldType fieldType = schema.getFieldTypes().get(fieldTypeName); fieldTypeAnalysisResults.add(fieldTypeName, analyzeValues(request, fieldType, null)); } } NamedList<NamedList> fieldNameAnalysisResults = new SimpleOrderedMap<NamedList>(); if (request.getFieldNames() != null) { for (String fieldName : request.getFieldNames()) { FieldType fieldType = schema.getFieldType(fieldName); fieldNameAnalysisResults.add(fieldName, analyzeValues(request, fieldType, fieldName)); } } analysisResults.add("field_types", fieldTypeAnalysisResults); analysisResults.add("field_names", fieldNameAnalysisResults); return analysisResults; }