### Question:
LuceneSerializer { protected Query like(Operation<?> operation, QueryMetadata metadata) { verifyArguments(operation); Path<?> path = getPath(operation.getArg(0)); String field = toField(path); String[] terms = convert(path, operation.getArg(1)); if (terms.length > 1) { BooleanQuery bq = new BooleanQuery(); for (String s : terms) { bq.add(new WildcardQuery(new Term(field, "*" + s + "*")), Occur.MUST); } return bq; } return new WildcardQuery(new Term(field, terms[0])); } LuceneSerializer(boolean lowerCase, boolean splitTerms);  LuceneSerializer(boolean lowerCase, boolean splitTerms,
            Locale sortLocale); Query toQuery(Expression<?> expr, QueryMetadata metadata); Sort toSort(List<? extends OrderSpecifier<?>> orderBys); static final LuceneSerializer DEFAULT; }### Answer:
@Test public void like() throws Exception { testQuery(author.like("*ichael*"), "author:*ichael*", 1); }
@Test public void like_custom_wildcard_single_character() throws Exception { testQuery(author.like("Mi?hael"), "author:mi?hael", 1); }
@Test public void like_custom_wildcard_multiple_character() throws Exception { testQuery(text.like("*U*X*"), "text:*u*x*", 1); }
@Test public void like_phrase() throws Exception { testQuery(title.like("*rassic Par*"), "+title:**rassic* +title:*par**", 1); }
@Test public void like_or_like() throws Exception { testQuery(title.like("House").or(author.like("*ichae*")), "title:house author:*ichae*", 1); }
@Test public void like_and_like() throws Exception { testQuery(title.like("*assic*").and(rating.like("G?od")), "+title:*assic* +rating:g?od", 1); }
@Test public void like_not_does_not_find_results() throws Exception { testQuery(title.like("*H*e*").not(), "-title:*h*e* +*:*", 1); }
@Test public void like_empty_string() throws Exception { testQuery(title.like(""), "title:", 0); }