Comment utiliser booleanQuery avec StandardAnalyzer dans Lucene Search?Lucene BooleanQuery
Répondre
Je présume que vous faites référence à l'analyse des requêtes booléennes à l'aide de l'objet QueryParser, est-ce correct? Le Lucene query syntax documentation devrait avoir tout ce dont vous avez besoin.
BooleanQuery. BooleanQuery
est un conteneur de clauses booléennes, qui sont des sous-requêtes facultatives, obligatoires ou interdites. Vous pouvez normalement ajouter une clause à BooleanQuery
faire usage d'une méthode API qui ressemble à:
public void add (requête de requête, nécessaire booléenne, booléen interdit)
Selon le document, les requêtes booléennes doivent être créés une fois par BooleanQuery.QueryBuilder et ensuite considéré comme immuable. See BooleanQuery.Builder.add(org.apache.lucene.search.BooleanClause)
L'exemple de code peut être trouvé par http://programtalk.com/java-api-usage-examples/org.apache.lucene.util.QueryBuilder/ et un exemple donné est:
public Query parse(Type type, String fieldName, Object value) throws IOException {
final String field;
MappedFieldType fieldType = context.fieldMapper(fieldName);
if (fieldType != null) {
field = fieldType.name();
} else {
field = fieldName;
}
/*
* If the user forced an analyzer we really don't care if they are
* searching a type that wants term queries to be used with query string
* because the QueryBuilder will take care of it. If they haven't forced
* an analyzer then types like NumberFieldType that want terms with
* query string will blow up because their analyzer isn't capable of
* passing through QueryBuilder.
*/
boolean noForcedAnalyzer = this.analyzer == null;
if (fieldType != null && fieldType.tokenized() == false && noForcedAnalyzer) {
return blendTermQuery(new Term(fieldName, value.toString()), fieldType);
}
Analyzer analyzer = getAnalyzer(fieldType);
assert analyzer != null;
MatchQueryBuilder builder = new MatchQueryBuilder(analyzer, fieldType);
builder.setEnablePositionIncrements(this.enablePositionIncrements);
Query query = null;
switch(type) {
case BOOLEAN:
if (commonTermsCutoff == null) {
query = builder.createBooleanQuery(field, value.toString(), occur);
} else {
query = builder.createCommonTermsQuery(field, value.toString(), occur, occur, commonTermsCutoff, fieldType);
}
break;
case PHRASE:
query = builder.createPhraseQuery(field, value.toString(), phraseSlop);
break;
case PHRASE_PREFIX:
query = builder.createPhrasePrefixQuery(field, value.toString(), phraseSlop, maxExpansions);
break;
default:
throw new IllegalStateException("No type found for [" + type + "]");
}
if (query == null) {
return zeroTermsQuery();
} else {
return query;
}
}
- 1. Opérateurs imbriqués/require dans les requêtes de recherche Lucene
- 2. performance Lucene
- 3. Lucene QueryParser
- 4. Lucene Version
- 5. Est-ce que Zend Lucene a besoin de Java Lucene?
- 6. Problème de requête lucene
- 7. Lucene pour Blackberry OS?
- 8. lucene plus grand que
- 9. Lucene et barre oblique
- 10. zend search lucene
- 11. Lucene Optimisation de l'index
- 12. Lucene Javadoc package
- 13. Quelques questions Lucene
- 14. Lucene « ou requêtes »
- 15. Lucene syntaxe de requête
- 16. Zend Lucene Index Merge
- 17. Champ complet de Lucene
- 18. lucene, ou sql fulltext?
- 19. Query dans Lucene
- 20. Lucene hébreu analyseur
- 21. Ruby alternative pour Lucene
- 22. Lucene Search Erreur pile
- 23. Obtenir l'ID Doc dans Lucene
- 24. Optimisation des performances de Lucene
- 25. Modification d'un terme dans Lucene
- 26. Lucene .Net Recherche avec TermVector
- 27. Recherche multi-champs dans Lucene
- 28. Lire un document dans Lucene
- 29. Lucene SpanQuery - à quoi bon?
- 30. recherche Lucene avec requête complexe
Fonctionnement. Je vous remercie – Shashi