public Language getParsingLanguage() { return getParsingLanguage(queryString); }
/** * Returns the language to use when parsing, with a text to use for detection if necessary. * if not decided by the item under parsing. This is never null or UNKNOWN */ public Language getOrDetectLanguage(String languageDetectionText) { if (language != null && language != Language.UNKNOWN) return language; if (model.isPresent()) return model.get().getParsingLanguage(languageDetectionText); return Language.UNKNOWN; // against the promise in the JavaDoc, but it is not locally ensured }
private Query normalizeBody(Query query, IndexFacts.Session indexFacts) { Item root = query.getModel().getQueryTree().getRoot(); Language language = query.getModel().getParsingLanguage(); if (root instanceof BlockItem) { List<Item> rootItems = new ArrayList<>(1); rootItems.add(root); ListIterator<Item> i = rootItems.listIterator(); i.next(); normalizeBlocks(language, indexFacts, (BlockItem) root, i); if ( ! rootItems.isEmpty()) // give up normalizing if the root was removed query.getModel().getQueryTree().setRoot(rootItems.get(0)); } else if (root instanceof CompositeItem) { query.getModel().getQueryTree().setRoot(normalizeComposite(language, indexFacts, (CompositeItem) root)); } return query; }
@Override public Result search(Query query, Execution execution) { Language language = query.getModel().getParsingLanguage(); if ( ! language.isCjk()) return execution.search(query); QueryTree tree = query.getModel().getQueryTree(); tree.setRoot(transform(tree.getRoot())); query.trace("Rewriting for CJK behavior for implicit phrases", true, 2); return execution.search(query); }
private Item replaceTerms(Query q, IndexFacts.Session indexFacts) { Language language = q.getModel().getParsingLanguage(); if (language == Language.UNKNOWN) { return q.getModel().getQueryTree().getRoot(); } StemContext context = new StemContext(); context.isCJK = language.isCjk(); context.language = language; context.indexFacts = indexFacts; context.reverseConnectivity = createReverseConnectivities(q.getModel().getQueryTree().getRoot()); return scan(q.getModel().getQueryTree().getRoot(), context); }
/** * Convert String to query tree * * @param stringToParse The string to be converted to a * query tree * @param query Query object from searcher * @return Item The resulting query tree */ static Item convertStringToQTree(Query query, String stringToParse) { RewriterUtils.log(logger, query, "Converting string [" + stringToParse + "] to query tree"); if(stringToParse==null) { return new NullItem(); } Model model = query.getModel(); CustomParser parser = (CustomParser) ParserFactory.newInstance(model.getType(), ParserEnvironment.fromExecutionContext(query.getModel().getExecution().context())); IndexFacts indexFacts = new IndexFacts(); Item item = parser.parse(stringToParse, null, model.getParsingLanguage(), indexFacts.newSession(model.getSources(), model.getRestrict()), model.getDefaultIndex()); RewriterUtils.log(logger, query, "Converted string: [" + item.toString() + "]"); return item; }