Ejemplo n.º 1
0
 public void testWildCardQuery() throws ParseException {
   Analyzer a = new ASCIIAnalyzer();
   QueryParser parser = new QueryParser(FIELD, a);
   parser.setAllowLeadingWildcard(true);
   assertEquals("*bersetzung uber*ung", parser.parse("*bersetzung über*ung").toString(FIELD));
   parser.setAllowLeadingWildcard(false);
   assertEquals(
       "motley crue motl?* cru?", parser.parse("Mötley Cr\u00fce Mötl?* Crü?").toString(FIELD));
   assertEquals(
       "renee zellweger ren?? zellw?ger",
       parser.parse("Renée Zellweger Ren?? Zellw?ger").toString(FIELD));
 }
Ejemplo n.º 2
0
  public void testWildcardAlone() throws ParseException {
    // seems like crazy edge case, but can be useful in concordance
    QueryParser parser = new QueryParser(FIELD, new ASCIIAnalyzer());
    parser.setAllowLeadingWildcard(false);
    expectThrows(
        ParseException.class,
        () -> {
          parser.parse("*");
        });

    QueryParser parser2 = new QueryParser("*", new ASCIIAnalyzer());
    parser2.setAllowLeadingWildcard(false);
    assertEquals(new MatchAllDocsQuery(), parser2.parse("*"));
  }
  private QueryExpression create(Request request, ResourceDefinition resourceDefinition)
      throws InvalidQueryException {
    String queryString;
    if (request.getCardinality() == Request.Cardinality.INSTANCE) {
      String idPropertyName = resourceDefinition.getIdPropertyName();
      queryString =
          String.format("%s:%s", idPropertyName, request.<String>getProperty(idPropertyName));
    } else {
      queryString = request.getQueryString();
    }

    QueryExpression queryExpression;
    if (queryString != null && !queryString.isEmpty()) {
      QueryParser queryParser = new QueryParser(Version.LUCENE_48, "name", new KeywordAnalyzer());
      queryParser.setLowercaseExpandedTerms(false);
      queryParser.setAllowLeadingWildcard(true);
      Query query;
      try {
        query = queryParser.parse((String) escape(queryString));
      } catch (ParseException e) {
        throw new InvalidQueryException(e.getMessage());
      }
      LOG.info("LuceneQuery: " + query);
      queryExpression = create(query, resourceDefinition);
    } else {
      queryExpression = new AlwaysQueryExpression();
    }
    // add query properties to request so that they are returned
    request.addAdditionalSelectProperties(queryExpression.getProperties());
    return queryExpression;
  }
Ejemplo n.º 4
0
 private List<T> search(
     final String queryString,
     final int pageNumber,
     final int pageSize,
     final PagingStrategy paging) {
   final QueryParser parser = new QueryParser(DEFAULT_FIELD, new StandardAnalyzer());
   parser.setAllowLeadingWildcard(true);
   parser.setDefaultOperator(Operator.AND);
   final FullTextSession searchSession = getSearchSession();
   try {
     final FullTextQuery query =
         searchSession.createFullTextQuery(parser.parse(queryString), this.type);
     paging.setup(query, pageNumber, pageSize);
     return query.list();
   } catch (final ParseException e) {
     throw new EGOVRuntimeException("invalid.search.string", e);
   }
 }