List of usage examples for org.apache.lucene.search BooleanQuery BooleanQuery
BooleanQuery
From source file:com.sindicetech.siren.search.node.TestTupleQuery.java
License:Open Source License
/** * <code>bbb ({[+ddd] [+eee]})</code> *///from w w w .j a v a 2s . co m @Test public void testParenthesisMust2() throws IOException { this.addDocument("\"bbb\" . "); final Query query = tuple().optional(nbq(must("ddd")), nbq(must("eee"))).getLuceneProxyQuery(); final BooleanQuery q = new BooleanQuery(); q.add(new TermQuery(new Term(DEFAULT_TEST_FIELD, "bbb")), BooleanClause.Occur.SHOULD); q.add(query, BooleanClause.Occur.SHOULD); assertEquals(1, searcher.search(q, 100).totalHits); }
From source file:com.sindicetech.siren.search.node.TestTupleQuery.java
License:Open Source License
/** * <code>bbb +({[ddd] [eee]})</code> * Here, the keywords are mandatory in the cell, but each cell is optional in * the tuple. So, even the first document (having only one cell) should match. *//*from w ww . j av a 2 s . c o m*/ @Test public void testParenthesisMust3() throws IOException { this.addDocument("\"aaa\" . \"eee\" \"bbb\" . "); this.addDocument("\"bbb\" . \"ccc\" \"ddd bbb\" . "); this.addDocument("\"bbb\" . \"ccc eee\" \"ddd bbb\" . "); final Query query = tuple().optional(nbq(should("ddd")), nbq(should("eee"))).getLuceneProxyQuery(); final BooleanQuery q = new BooleanQuery(); q.add(new TermQuery(new Term(DEFAULT_TEST_FIELD, "aaa")), BooleanClause.Occur.SHOULD); q.add(query, BooleanClause.Occur.MUST); assertEquals(3, searcher.search(q, 100).totalHits); }
From source file:com.sindicetech.siren.search.node.TestTupleQuery.java
License:Open Source License
/** * <code>{[bbb eee]} {[ccc eee]}</code> *//*from ww w . j a v a2s .c o m*/ @Test public void testParenthesisShould() throws IOException { this.addDocument("\"bbb eee\" . \"ccc eee\" . "); this.addDocument("\"bbb\" . \"aaa\" . "); this.addDocument("\"eee\" . \"aaa\" . "); this.addDocument("\"aaa\" . \"ccc\" . "); this.addDocument("\"aaa\" . \"eee\" . "); final Query tq1 = tuple().optional(nbq(should("bbb"), should("eee"))).getLuceneProxyQuery(); final Query tq2 = tuple().optional(nbq(should("ccc"), should("eee"))).getLuceneProxyQuery(); final BooleanQuery q = new BooleanQuery(); q.add(tq1, BooleanClause.Occur.SHOULD); q.add(tq2, BooleanClause.Occur.SHOULD); assertEquals(5, searcher.search(q, 100).totalHits); }
From source file:com.sindicetech.siren.search.node.TestTupleQuery.java
License:Open Source License
/** * <code>+{+[+actor]} +{+[+actor]}</code> *//*w ww .j a v a 2 s . c o m*/ @Test public void testLuceneBooleanMust() throws IOException { this.addDocument( "<actor> \"actor 1\" <birthdate> \"456321\" . " + "<actor> \"actor 2\" <birthdate> \"456321\" . "); this.addDocument("<actor> \"actor 1\" . <actor> \"actor 2\" . "); final Query tq1 = tuple().with(nbq(must("actor")).bound(0, 0)).getLuceneProxyQuery(); final Query tq2 = tuple().with(nbq(must("actor")).bound(1, 1)).getLuceneProxyQuery(); final BooleanQuery bq = new BooleanQuery(); bq.add(tq1, Occur.MUST); bq.add(tq2, Occur.MUST); assertEquals(2, searcher.search(bq, 100).totalHits); }
From source file:com.soebes.supose.core.search.CustomQueryParser.java
License:Open Source License
@Override protected Query getFieldQuery(String field, String term) throws ParseException { LOGGER.debug("getFieldQuery(): field:" + field + " Term: " + term); // This will handle the situation: // +revision:1 if (FieldNames.REVISION.getValue().equals(field)) { int revision = Integer.parseInt(term); term = NumberUtils.pad(revision); }/* ww w .jav a 2 s .c o m*/ if (FieldNames.FILENAME.getValue().equals(field)) { Term t = new Term(FieldNames.FILENAME.getValue(), term.toLowerCase()); TermQuery tq = new TermQuery(t); BooleanQuery bq = new BooleanQuery(); bq.add(tq, Occur.MUST); return bq; } return super.getFieldQuery(field, term); }
From source file:com.square.core.dao.implementations.PersonneMoraleDaoImplementation.java
License:Open Source License
@Override @SuppressWarnings("unchecked") public ResultatPaginationFullText<PersonneMorale> rechercherPersonneMoraleParCriteres( RemotePagingCriteriasDto<PersonneMoralCriteresRechercheDto> criteres) throws ParseException { final PersonneMoralCriteresRechercheDto criteresRecherche = criteres.getCriterias(); final BooleanQuery bq = new BooleanQuery(); if (criteresRecherche.getRaisonSociale() != null && !("".equals(criteresRecherche.getRaisonSociale()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "raisonSociale", getAnalyser(PersonneMorale.class)); parser.setAllowLeadingWildcard(true); final String raisonSociale = criteresRecherche.getRaisonSociale().replaceAll(POURCENT, ETOILE); final org.apache.lucene.search.Query requeteLucene = parser .parse(raisonSociale.lastIndexOf(ETOILE) == raisonSociale.length() - 1 ? raisonSociale : raisonSociale + ETOILE); bq.add(requeteLucene, BooleanClause.Occur.MUST); }//from ww w .j a v a 2 s . co m if (criteresRecherche.getEnseigneCommerciale() != null && !("".equals(criteresRecherche.getEnseigneCommerciale()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "enseigneCommercial", getAnalyser(PersonneMorale.class)); parser.setAllowLeadingWildcard(true); final String enseigneCommerciale = criteresRecherche.getEnseigneCommerciale().replaceAll(POURCENT, ETOILE); final org.apache.lucene.search.Query requeteLucene = parser .parse(enseigneCommerciale.lastIndexOf(ETOILE) == enseigneCommerciale.length() - 1 ? enseigneCommerciale : enseigneCommerciale + ETOILE); bq.add(requeteLucene, BooleanClause.Occur.MUST); } // Critre sur le numro de l'entreprise String numeroEntreprise = criteresRecherche.getNumeroEntreprise(); if (!StringUtils.isBlank(numeroEntreprise)) { numeroEntreprise = numeroEntreprise.replaceAll(POURCENT, ETOILE); final MultiFieldQueryParser parser = new MultiFieldQueryParser(getMatchingVersion(), new String[] { "numSiret", "num" }, getAnalyser(PersonneMorale.class)); parser.setAllowLeadingWildcard(true); final org.apache.lucene.search.Query requeteLucene = parser.parse(numeroEntreprise); bq.add(requeteLucene, BooleanClause.Occur.MUST); } // Critere sur le complement du nom if (criteresRecherche.getComplementNom() != null && !("".equals(criteresRecherche.getComplementNom()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "adresses.complementNom", getAnalyser(PersonneMorale.class)); parser.setAllowLeadingWildcard(true); final String complementNom = criteresRecherche.getComplementNom().replaceAll(POURCENT, ETOILE); final org.apache.lucene.search.Query requeteLucene = parser .parse(complementNom.lastIndexOf(ETOILE) == complementNom.length() - 1 ? complementNom : complementNom + ETOILE); bq.add(requeteLucene, BooleanClause.Occur.MUST); } // Critre sur le dpartement if (criteresRecherche.getListeDepartements() != null && !criteresRecherche.getListeDepartements().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getListeDepartements(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("adresses.codePostalCommune.commune.departement.id", listeValeurs), BooleanClause.Occur.MUST); } // Critre sur la ville if (criteresRecherche.getListeVilles() != null && !criteresRecherche.getListeVilles().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getListeVilles(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("adresses.codePostalCommune.commune.id", listeValeurs), BooleanClause.Occur.MUST); } // Critre sur le code postal if (criteresRecherche.getListeCodesPostaux() != null && !criteresRecherche.getListeCodesPostaux().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getListeCodesPostaux(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("adresses.codePostalCommune.codePostal.id", listeValeurs), BooleanClause.Occur.MUST); } // Critre sur la forme juridique if (criteresRecherche.getListeFormesJuridiques() != null && !criteresRecherche.getListeFormesJuridiques().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getListeFormesJuridiques(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("formeJuridique.id", listeValeurs), BooleanClause.Occur.MUST); } // Critre sur le commercial if (criteresRecherche.getListeCommerciaux() != null && !criteresRecherche.getListeCommerciaux().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getListeCommerciaux(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("attribution.ressource.id", listeValeurs), BooleanClause.Occur.MUST); } // Critre sur l'agence if (criteresRecherche.getListeAgences() != null && !criteresRecherche.getListeAgences().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getListeAgences(), StringValueTransformer.getInstance()); bq.add(getInQuery("attribution.agence.id", listeValeurs), BooleanClause.Occur.MUST); } // Critre sur la nature if (criteresRecherche.getListeNatures() != null && !criteresRecherche.getListeNatures().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getListeNatures(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("naturePersonneMorale.id", listeValeurs), BooleanClause.Occur.MUST); } // Construction de la requte par defaut. if (criteresRecherche.getRaisonSociale() == null || "".equals(criteresRecherche.getRaisonSociale())) { final QueryParser parser = new QueryParser(getMatchingVersion(), "raisonSociale", getAnalyser(PersonnePhysique.class)); parser.setAllowLeadingWildcard(true); final org.apache.lucene.search.Query requeteLucene = parser.parse("*"); bq.add(requeteLucene, BooleanClause.Occur.MUST); } // CONSTRUCTION DE LA REQUETE final FullTextQuery fullTextQuery = createFullTextQuery(bq, PersonneMorale.class); // AJOUT DES INFORMATION DE TRI if (criteres.getListeSorts().size() > 0) { final SortField[] listeChamp = new SortField[criteres.getListeSorts().size()]; for (int index = 0; index < criteres.getListeSorts().size(); index++) { listeChamp[index] = new SortField(criteres.getListeSorts().get(index).getSortField(), SortField.STRING, criteres.getListeSorts().get(index) .getSortAsc() == RemotePagingSort.REMOTE_PAGING_SORT_DESC); } final Sort sort = new Sort(listeChamp); fullTextQuery.setSort(sort); } // AJOUT DES INFORMATIONS DE PAGINATION fullTextQuery.setFirstResult(criteres.getFirstResult()); fullTextQuery.setMaxResults(criteres.getMaxResult()); // RETOURNE LA LISTE DES RESULTATS ET LE NOMBRE TOTAL DE RESULTAT (non affct par la pagination) return new ResultatPaginationFullText<PersonneMorale>(fullTextQuery.list(), fullTextQuery.getResultSize()); }
From source file:com.square.core.dao.implementations.PersonnePhysiqueDaoImplementation.java
License:Open Source License
@SuppressWarnings("unchecked") @Override//ww w. j a v a 2 s . co m public ResultatPaginationFullText<PersonnePhysique> rechercheFullTextPersonne( RemotePagingCriteriasDto<PersonneCriteresRechercheDto> criteres) throws ParseException { final PersonneCriteresRechercheDto criteresRecherche = criteres.getCriterias(); // Si des critres ont t fournis on traite ces critres final BooleanQuery bq = new BooleanQuery(); if (criteresRecherche.getNumeroClient() != null && !("".equals(criteresRecherche.getNumeroClient()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "num", getAnalyser(PersonnePhysique.class)); parser.setAllowLeadingWildcard(true); String numeroClient = criteresRecherche.getNumeroClient().replaceAll(POURCENT, ETOILE); if (!criteres.getCriterias().isRechercheStricte()) { numeroClient = numeroClient.lastIndexOf(ETOILE) == numeroClient.length() - 1 ? numeroClient : numeroClient + ETOILE; } final org.apache.lucene.search.Query requeteLucene = parser.parse(numeroClient); bq.add(requeteLucene, BooleanClause.Occur.MUST); } if (criteresRecherche.getNom() != null && !("".equals(criteresRecherche.getNom()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "nom", getAnalyser(PersonnePhysique.class)); parser.setAllowLeadingWildcard(true); String nom = criteresRecherche.getNom().replaceAll(POURCENT, ETOILE); if (!criteres.getCriterias().isRechercheStricte()) { nom = nom.lastIndexOf(ETOILE) == nom.length() - 1 ? nom : nom + ETOILE; } final org.apache.lucene.search.Query requeteLucene = parser.parse(nom); bq.add(requeteLucene, BooleanClause.Occur.MUST); } if (criteresRecherche.getNomJeuneFille() != null && !("".equals(criteresRecherche.getNomJeuneFille()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "nomJeuneFille", getAnalyser(PersonnePhysique.class)); parser.setAllowLeadingWildcard(true); String nomJeuneFille = criteresRecherche.getNomJeuneFille().replaceAll(POURCENT, ETOILE); if (!criteres.getCriterias().isRechercheStricte()) { nomJeuneFille = nomJeuneFille.lastIndexOf(ETOILE) == nomJeuneFille.length() - 1 ? nomJeuneFille : nomJeuneFille + ETOILE; } final org.apache.lucene.search.Query requeteLucene = parser.parse(nomJeuneFille); bq.add(requeteLucene, BooleanClause.Occur.MUST); } if (criteresRecherche.getPrenom() != null && !("".equals(criteresRecherche.getPrenom()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "prenom", getAnalyser(PersonnePhysique.class)); parser.setAllowLeadingWildcard(true); String prenom = criteresRecherche.getPrenom().replaceAll(POURCENT, ETOILE); if (!criteres.getCriterias().isRechercheStricte()) { prenom = prenom.lastIndexOf(ETOILE) == prenom.length() - 1 ? prenom : prenom + ETOILE; } final org.apache.lucene.search.Query requeteLucene = parser.parse(prenom); bq.add(requeteLucene, BooleanClause.Occur.MUST); } if (criteresRecherche.getNro() != null && !("".equals(criteresRecherche.getNro()))) { if (criteresRecherche.getNro().length() == 15) { final NumeroRoDto numeroRo = squareMappingService.convertirNroVersNss(criteresRecherche.getNro()); AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "infoSante.numSecuriteSocial", getAnalyser(PersonnePhysique.class)); parser.setAllowLeadingWildcard(true); String numeroSs = numeroRo.getNumeroSS().replaceAll(POURCENT, ETOILE); if (!criteres.getCriterias().isRechercheStricte()) { numeroSs = numeroSs.lastIndexOf(ETOILE) == numeroSs.length() - 1 ? numeroSs : numeroSs + ETOILE; } org.apache.lucene.search.Query requeteLucene = parser.parse(numeroSs); bq.add(requeteLucene, BooleanClause.Occur.MUST); parser = new AnalysingCustomQueryParser(getMatchingVersion(), "infoSante.cleSecuriteSocial", getAnalyser(PersonnePhysique.class)); parser.setAllowLeadingWildcard(true); String cleSs = numeroRo.getCleSS().replaceAll(POURCENT, ETOILE); if (!criteres.getCriterias().isRechercheStricte()) { cleSs = cleSs.lastIndexOf(ETOILE) == cleSs.length() - 1 ? cleSs : cleSs + ETOILE; } requeteLucene = parser.parse(cleSs); bq.add(requeteLucene, BooleanClause.Occur.MUST); } else { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "infoSante.numSecuriteSocial", getAnalyser(PersonnePhysique.class)); parser.setAllowLeadingWildcard(true); String numeroSs = criteresRecherche.getNro().replaceAll(POURCENT, ETOILE); if (!criteres.getCriterias().isRechercheStricte()) { numeroSs = numeroSs.lastIndexOf(ETOILE) == numeroSs.length() - 1 ? numeroSs : numeroSs + ETOILE; } final org.apache.lucene.search.Query requeteLucene = parser.parse(numeroSs); bq.add(requeteLucene, BooleanClause.Occur.MUST); } } if (criteresRecherche.getDateNaissance() != null) { final DateNaissanceBridge dateBridge = new DateNaissanceBridge(); final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "dateNaissance", getAnalyser(PersonnePhysique.class)); final org.apache.lucene.search.Query requeteLucene = parser .parse(dateBridge.objectToString(criteresRecherche.getDateNaissance())); bq.add(requeteLucene, BooleanClause.Occur.MUST); } if (criteresRecherche.getListeNatures() != null && !criteresRecherche.getListeNatures().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getListeNatures(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("nature.id", listeValeurs), BooleanClause.Occur.MUST); } if (criteresRecherche.getTelephone() != null && !("".equals(criteresRecherche.getTelephone()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "telephones.numTelephone", getAnalyser(PersonnePhysique.class)); parser.setAllowLeadingWildcard(true); String telephone = criteresRecherche.getTelephone().replaceAll(POURCENT, ETOILE); if (!criteres.getCriterias().isRechercheStricte()) { telephone = telephone.lastIndexOf(ETOILE) == telephone.length() - 1 ? telephone : telephone + ETOILE; } final org.apache.lucene.search.Query requeteLucene = parser.parse(telephone); bq.add(requeteLucene, BooleanClause.Occur.MUST); } if (criteresRecherche.getEmail() != null && !("".equals(criteresRecherche.getEmail()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "emails.adresse", getAnalyser(PersonnePhysique.class)); parser.setAllowLeadingWildcard(true); String email = criteresRecherche.getEmail().replaceAll(POURCENT, ETOILE); if (!criteres.getCriterias().isRechercheStricte()) { email = email.lastIndexOf(ETOILE) == email.length() - 1 ? email : email + ETOILE; } final org.apache.lucene.search.Query requeteLucene = parser.parse(email); bq.add(requeteLucene, BooleanClause.Occur.MUST); } if (criteresRecherche.getNumVoie() != null && !("".equals(criteresRecherche.getNumVoie()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "adresses.numeroVoie", getAnalyser(PersonnePhysique.class)); parser.setAllowLeadingWildcard(true); String numVoie = criteresRecherche.getNumVoie().replaceAll(POURCENT, ETOILE); if (!criteres.getCriterias().isRechercheStricte()) { numVoie = numVoie.lastIndexOf(ETOILE) == numVoie.length() - 1 ? numVoie : numVoie + ETOILE; } final org.apache.lucene.search.Query requeteLucene = parser.parse(numVoie); bq.add(requeteLucene, BooleanClause.Occur.MUST); } if (criteresRecherche.getListeNaturesVoie() != null && !criteresRecherche.getListeNaturesVoie().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getListeNaturesVoie(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("adresses.typeVoie.id", listeValeurs), BooleanClause.Occur.MUST); } if (criteresRecherche.getListeNaturesTelephones() != null && !criteresRecherche.getListeNaturesTelephones().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getListeNaturesTelephones(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("telephones.natureTelephone.id", listeValeurs), BooleanClause.Occur.MUST); } if (criteresRecherche.getAdresse() != null && !("".equals(criteresRecherche.getAdresse()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "adresses.nomVoie", getAnalyser(PersonnePhysique.class)); parser.setAllowLeadingWildcard(true); String adresse = criteresRecherche.getAdresse().replaceAll(POURCENT, ETOILE); if (!criteres.getCriterias().isRechercheStricte()) { adresse = adresse.lastIndexOf(ETOILE) == adresse.length() - 1 ? adresse : adresse + ETOILE; } final org.apache.lucene.search.Query requeteLucene = parser.parse(adresse); bq.add(requeteLucene, BooleanClause.Occur.MUST); } if (criteresRecherche.getListeCodesPostaux() != null && !criteresRecherche.getListeCodesPostaux().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getListeCodesPostaux(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("adresses.codePostalCommune.codePostal.id", listeValeurs), BooleanClause.Occur.MUST); } if (criteresRecherche.getListeVilles() != null && !criteresRecherche.getListeVilles().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getListeVilles(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("adresses.codePostalCommune.commune.id", listeValeurs), BooleanClause.Occur.MUST); } if (criteresRecherche.getIdCommerciaux() != null && !criteresRecherche.getIdCommerciaux().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getIdCommerciaux(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("attribution.ressource.id", listeValeurs), BooleanClause.Occur.MUST); } if (criteresRecherche.getIdAgences() != null && !criteresRecherche.getIdAgences().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getIdAgences(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("attribution.agence.id", listeValeurs), BooleanClause.Occur.MUST); } if (criteresRecherche.getIdPersonnesAIgnorer() != null && !criteresRecherche.getIdPersonnesAIgnorer().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getIdPersonnesAIgnorer(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("id", listeValeurs), BooleanClause.Occur.MUST_NOT); } if (criteresRecherche.getListeReseaux() != null && !criteresRecherche.getListeReseaux().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getListeReseaux(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("reseau.id", listeValeurs), BooleanClause.Occur.MUST); } final List<Long> idPersonnes = criteresRecherche.getIdPersonnes(); if (idPersonnes != null && !idPersonnes.isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils.collect(idPersonnes, StringValueTransformer.getInstance()); bq.add((Query) getInQuery("id", listeValeurs), BooleanClause.Occur.MUST); } // On ne recherche que les personnes non supprimes if (criteresRecherche.getSupprime() != null) { bq.add(new TermQuery(new Term("supprime", criteresRecherche.getSupprime().toString())), BooleanClause.Occur.MUST); } // CONSTRUCTION DE LA REQUETE final FullTextQuery fullTextQuery = createFullTextQuery(bq, PersonnePhysique.class); logger.debug("Requte full text : " + fullTextQuery.getQueryString()); // AJOUT DES INFORMATION DE TRI if (criteres.getListeSorts().size() > 0) { final SortField[] listeChamp = new SortField[criteres.getListeSorts().size()]; for (int index = 0; index < criteres.getListeSorts().size(); index++) { listeChamp[index] = new SortField(criteres.getListeSorts().get(index).getSortField(), SortField.STRING, criteres.getListeSorts().get(index) .getSortAsc() == RemotePagingSort.REMOTE_PAGING_SORT_DESC); } final Sort sort = new Sort(listeChamp); fullTextQuery.setSort(sort); } // AJOUT DES INFORMATIONS DE PAGINATION final int nbMaxDocs = fullTextQuery.getResultSize(); fullTextQuery.setFirstResult(criteres.getFirstResult()); fullTextQuery.setMaxResults((criteres.getFirstResult() + criteres.getMaxResult()) > nbMaxDocs ? (nbMaxDocs == 0 ? nbMaxDocs + 1 : nbMaxDocs) : criteres.getMaxResult()); // RETOURNE LA LISTE DES RESULTATS ET LE NOMBRE TOTAL DE RESULTAT (non affct par la pagination) return new ResultatPaginationFullText<PersonnePhysique>(fullTextQuery.list(), nbMaxDocs); }
From source file:com.square.core.dao.implementations.RessourceDaoImplementation.java
License:Open Source License
@SuppressWarnings("unchecked") @Override/*from w w w . j a va 2 s .com*/ public ResultatPaginationFullText<Ressource> rechercherFullTextRessource( RemotePagingCriteriasDto<RessourceCriteresRechercheDto> criteres) throws ParseException { final RessourceCriteresRechercheDto criteresRecherche = criteres.getCriterias(); // Si des critres ont t fournis on traite ces critres final BooleanQuery bq = new BooleanQuery(); if (criteresRecherche.getNom() != null && !("".equals(criteresRecherche.getNom()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), FIELD_NOM, getAnalyser(Ressource.class)); parser.setAllowLeadingWildcard(true); final String nom = criteresRecherche.getNom().replaceAll(POURCENT, ETOILE); final org.apache.lucene.search.Query requeteLucene = parser .parse(nom.lastIndexOf(ETOILE) == nom.length() - 1 ? nom : nom + ETOILE); bq.add(requeteLucene, BooleanClause.Occur.MUST); } if (criteresRecherche.getPrenom() != null && !("".equals(criteresRecherche.getPrenom()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "prenom", getAnalyser(Ressource.class)); parser.setAllowLeadingWildcard(true); final String prenom = criteresRecherche.getPrenom().replaceAll(POURCENT, ETOILE); final org.apache.lucene.search.Query requeteLucene = parser .parse(prenom.lastIndexOf(ETOILE) == prenom.length() - 1 ? prenom : prenom + ETOILE); bq.add(requeteLucene, BooleanClause.Occur.MUST); } // Critre sur la liste des services if (criteresRecherche.getIdServices() != null && !criteresRecherche.getIdServices().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getIdServices(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("service.id", listeValeurs), BooleanClause.Occur.MUST); } // Critre sur la liste des fonctions if (criteresRecherche.getIdFonctions() != null && !criteresRecherche.getIdFonctions().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getIdFonctions(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("fonction.id", listeValeurs), BooleanClause.Occur.MUST); } // Critre sur la liste des etats if (criteresRecherche.getIdEtats() != null && !criteresRecherche.getIdEtats().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils.collect(criteresRecherche.getIdEtats(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("etat.id", listeValeurs), BooleanClause.Occur.MUST); } // Critre sur la liste des agences if (criteresRecherche.getIdAgences() != null && !criteresRecherche.getIdAgences().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getIdAgences(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("agence.id", listeValeurs), BooleanClause.Occur.MUST); } // Critre sur la liste des identifiants extrieurs des fonctions if (criteresRecherche.getListeIdsExtsFonctions() != null && !criteresRecherche.getListeIdsExtsFonctions().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteresRecherche.getListeIdsExtsFonctions(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("fonction.identifiantExterieur", listeValeurs), BooleanClause.Occur.SHOULD); } // PARAMETRE TOUJOURS VRAI POUR RECHERCHER SANS CRITERE if (criteresRecherche.getNom() == null || "".equals(criteresRecherche.getNom())) { final QueryParser parser = new QueryParser(getMatchingVersion(), FIELD_NOM, getAnalyser(PersonnePhysique.class)); parser.setAllowLeadingWildcard(true); final org.apache.lucene.search.Query requeteLucene = parser.parse("*"); bq.add(requeteLucene, BooleanClause.Occur.MUST); } // CONSTRUCTION DE LA REQUETE final FullTextQuery fullTextQuery = createFullTextQuery(bq, Ressource.class); // AJOUT DES INFORMATION DE TRI if (criteres.getListeSorts().size() > 0) { final SortField[] listeChamp = new SortField[criteres.getListeSorts().size()]; for (int index = 0; index < criteres.getListeSorts().size(); index++) { listeChamp[index] = new SortField(criteres.getListeSorts().get(index).getSortField(), SortField.STRING, criteres.getListeSorts().get(index) .getSortAsc() == RemotePagingSort.REMOTE_PAGING_SORT_DESC); } final Sort sort = new Sort(listeChamp); fullTextQuery.setSort(sort); } // AJOUT DES INFORMATIONS DE PAGINATION fullTextQuery.setFirstResult(criteres.getFirstResult()); fullTextQuery.setMaxResults(criteres.getMaxResult()); // RETOURNE LA LISTE DES RESULTATS ET LE NOMBRE TOTAL DE RESULTAT (non affct par la pagination) return new ResultatPaginationFullText<Ressource>(fullTextQuery.list(), fullTextQuery.getResultSize()); }
From source file:com.square.core.dao.implementations.RessourceDaoImplementation.java
License:Open Source License
@SuppressWarnings("unchecked") @Override//from w w w . ja v a 2 s.com public List<Long> rechercherFullTextIdsRessources(RessourceCriteresRechercheDto criteres) throws ParseException { // Si des critres ont t fournis on traite ces critres final BooleanQuery bq = new BooleanQuery(); if (criteres.getNom() != null && !("".equals(criteres.getNom()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), FIELD_NOM, getAnalyser(Ressource.class)); parser.setAllowLeadingWildcard(true); final String nom = criteres.getNom().replaceAll(POURCENT, ETOILE); final org.apache.lucene.search.Query requeteLucene = parser .parse(nom.lastIndexOf(ETOILE) == nom.length() - 1 ? nom : nom + ETOILE); bq.add(requeteLucene, BooleanClause.Occur.MUST); } if (criteres.getPrenom() != null && !("".equals(criteres.getPrenom()))) { final AnalysingCustomQueryParser parser = new AnalysingCustomQueryParser(getMatchingVersion(), "prenom", getAnalyser(Ressource.class)); parser.setAllowLeadingWildcard(true); final String prenom = criteres.getPrenom().replaceAll(POURCENT, ETOILE); final org.apache.lucene.search.Query requeteLucene = parser .parse(prenom.lastIndexOf(ETOILE) == prenom.length() - 1 ? prenom : prenom + ETOILE); bq.add(requeteLucene, BooleanClause.Occur.MUST); } // Critre sur la liste des services if (criteres.getIdServices() != null && !criteres.getIdServices().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils.collect(criteres.getIdServices(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("service.id", listeValeurs), BooleanClause.Occur.MUST); } // Critre sur la liste des fonctions if (criteres.getIdFonctions() != null && !criteres.getIdFonctions().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils.collect(criteres.getIdFonctions(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("fonction.id", listeValeurs), BooleanClause.Occur.MUST); } // Critre sur la liste des etats if (criteres.getIdEtats() != null && !criteres.getIdEtats().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils.collect(criteres.getIdEtats(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("etat.id", listeValeurs), BooleanClause.Occur.MUST); } // Critre sur la liste des agences if (criteres.getIdAgences() != null && !criteres.getIdAgences().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils.collect(criteres.getIdAgences(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("agence.id", listeValeurs), BooleanClause.Occur.MUST); } // Critre sur la liste des identifiants extrieurs des fonctions if (criteres.getListeIdsExtsFonctions() != null && !criteres.getListeIdsExtsFonctions().isEmpty()) { final List<String> listeValeurs = (List<String>) CollectionUtils .collect(criteres.getListeIdsExtsFonctions(), StringValueTransformer.getInstance()); bq.add((Query) getInQuery("fonction.identifiantExterieur", listeValeurs), BooleanClause.Occur.SHOULD); } // PARAMETRE TOUJOURS VRAI POUR RECHERCHER SANS CRITERE if (criteres.getNom() == null || "".equals(criteres.getNom())) { final QueryParser parser = new QueryParser(getMatchingVersion(), FIELD_NOM, getAnalyser(PersonnePhysique.class)); parser.setAllowLeadingWildcard(true); final org.apache.lucene.search.Query requeteLucene = parser.parse("*"); bq.add(requeteLucene, BooleanClause.Occur.MUST); } // CONSTRUCTION DE LA REQUETE final FullTextQuery fullTextQuery = createFullTextQuery(bq, Ressource.class); fullTextQuery.setProjection("id"); final List<Object[]> listeResultats = (List<Object[]>) fullTextQuery.list(); // Mapping des rsultats final List<Long> resultats = new ArrayList<Long>(); for (Object[] resultat : listeResultats) { resultats.add((Long) resultat[0]); } return resultats; }
From source file:com.stratio.cassandra.index.query.BooleanCondition.java
License:Apache License
/** {@inheritDoc} */ @Override/* w w w . j a v a 2s . co m*/ public Query query(Schema schema) { BooleanQuery luceneQuery = new BooleanQuery(); luceneQuery.setBoost(boost); for (Condition query : must) { luceneQuery.add(query.query(schema), Occur.MUST); } for (Condition query : should) { luceneQuery.add(query.query(schema), Occur.SHOULD); } for (Condition query : not) { luceneQuery.add(query.query(schema), Occur.MUST_NOT); } return luceneQuery; }