Certains de mes champs indexés utilisent un analyseur grec et je souhaite utiliser un analyseur anglais pour d'autres champs. Mon problème est: Lors de la recherche de résultats (avec un MultiFieldQueryParser actuellement), comment utiliser un analyseur différent par champ, de sorte qu'un analyseur grec est utilisé pour les champs indexés en grec et qu'un analyseur anglais est utilisé pour les champs indexés en anglais?(HibernateSearch) Analyseur différent MultiFieldQueryParser par champ
3
A
Répondre
0
Vous pouvez construire votre analyseur de requête comme ceci:
Analyzer analyzer = fullTextSession.getSearchFactory().getAnalyzer(Item.class);
QueryParser parser = new MultiFieldQueryParser(Version.LUCENE_31, fields, analyzer);
qui utiliseraient l'analyseur approprié, tel que défini dans les annotations de votre classe d'objet:
@Field(name = "greekTitle" analyzer = @Analyzer(impl = GreekAnalyzer.class))
public void getGreekTitle(){
//...
}
@Field(name = "englishTitle" analyzer = @Analyzer(impl = StandardAnalyzer.class))
public void getEnglishTitle(){
//...
}
0
Voici la solution que j'ai trouvée. Commentez s'il vous plaît.
transaction.begin();
PerFieldAnalyzerWrapper wrapper = new PerFieldAnalyzerWrapper(new StandardAnalyzer(Version.LUCENE_30));
wrapper.addAnalyzer("greekTitle", new GreekAnalyzer(Version.LUCENE_30));
wrapper.addAnalyzer("greekDescription", new GreekAnalyzer(Version.LUCENE_30));
String[] fields = {"greekTitle", "greekDescription", "englishTitle", "englishDescription"};
QueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_30, fields, wrapper);
queryParser.setDefaultOperator(QueryParser.AND_OPERATOR);
org.apache.lucene.search.Query query = queryParser.parse(QueryParser.escape(queryString));
javax.persistence.Query persistenceQuery =
fullTextEntityManager.createFullTextQuery(query, Item.class);
@SuppressWarnings("unchecked")
List<Item> result = persistenceQuery.getResultList();
transaction.commit();
return result;
Questions connexes
- 1. HibernateSearch requête
- 2. JPA HibernateSearch Projections
- 3. Facteur de multiplication dans MultiFieldQueryParser
- 4. HibernateSearch comme mécanisme pour EclipseLink
- 5. Lucene: Boolean OU dans MultiFieldQueryParser
- 6. MultiFieldQueryParser supprime des points de l'acronyme
- 7. Utilisation de Lucene Highlighter avec MultiFieldQueryParser
- 8. lecture xmldata par analyseur
- 9. Comment regrouper par champ puis commande par champ différent puis limiter
- 10. LINQ: Comment retourner champ différent de celui utilisé par min()
- 11. champ différent selon les catégories
- 12. analyseur C# JSON - prendre un par un
- 13. C# Lua Analyseur/Analyseur
- 14. Ajouter un champ différent en C++
- 15. analyseur Lucene pour les valeurs multi dans un champ
- 16. comment je peux modifier la valeur du champ xml par analyseur SAX
- 17. évitant les commentaires par c analyseur lexical
- 18. Perl PDF ligne par ligne Analyseur?
- 19. analyseur de requête Lucene ne parse champ comme prévu
- 20. Comment regrouper par champ générique?
- 21. Analyseur de requête Solr permettant de spécifier plusieurs champs par défaut
- 22. mySQL Insérer uniquement lorsque le champ est différent
- 23. Analyseur HTML
- 24. analyseur CXMLDocument
- 25. analyseur Templating
- 26. XmlSerializer et champ différent dans la classe et l'attribut xml
- 27. Création d'un analyseur Lucene
- 28. Analyseur ANTLR Question
- 29. Identificateur différent d'entité par persisté dans Hibernate
- 30. ligne de commande MySQL sélectionner avec terminaison de champ différent