@Override public RewriterFactory createRewriterFactory(final NamedList<?> args, final ResourceLoader resourceLoader) throws IOException { final String rulesResourceName = (String) args.get("rules"); if (rulesResourceName == null) { throw new IllegalArgumentException("Property 'rules' not configured"); } final Boolean ignoreCase = args.getBooleanArg("ignoreCase"); // querqy parser for queries that are part of the instructions in the // rules String rulesQuerqyParser = (String) args.get("querqyParser"); QuerqyParserFactory querqyParser = null; if (rulesQuerqyParser != null) { rulesQuerqyParser = rulesQuerqyParser.trim(); if (rulesQuerqyParser.length() > 0) { querqyParser = resourceLoader.newInstance(rulesQuerqyParser, QuerqyParserFactory.class); } } if (querqyParser == null) { querqyParser = new WhiteSpaceQuerqyParserFactory(); } return new querqy.rewrite.commonrules.SimpleCommonRulesRewriterFactory( new InputStreamReader(resourceLoader.openResource(rulesResourceName), "UTF-8"), querqyParser, ignoreCase == null || ignoreCase); }
@Test public void testThatBoostInstructionWithSingleLetterTermIsAccepted() throws Exception { String line = "UP: x"; String lcLine = line.toLowerCase(); final Object instruction = LineParser .parseBoostInstruction(line, lcLine, 2, BoostDirection.UP, new WhiteSpaceQuerqyParserFactory()); assertTrue(instruction instanceof BoostInstruction); }
@Test public void testThatBoostInstructionWithSingleLetterTermAndBoostFactorIsAccepted() throws Exception { String line = "UP(5): x"; String lcLine = line.toLowerCase(); final Object instruction = LineParser .parseBoostInstruction(line, lcLine, 2, BoostDirection.UP, new WhiteSpaceQuerqyParserFactory()); assertTrue(instruction instanceof BoostInstruction); }
@Test public void testThatPlayholdersAreParsedForBoostInstruction() throws Exception { String line = "UP(500): 3$1"; String lcLine = line.toLowerCase(); final Object instruction = LineParser .parseBoostInstruction(line, lcLine, 2, BoostDirection.UP, new WhiteSpaceQuerqyParserFactory()); assertTrue(instruction instanceof BoostInstruction); assertTrue(((BoostInstruction) instruction).hasPlaceHolderInBoostQuery()); }