2013-05-10 1 views
0

Je construis actuellement un terme en suivant les étapes ci-dessous,La meilleure façon de construire un terme en utilisant Lucene 4.3.0 API?

final statique (niveau de la classe): Term t=new Term(fieldName);

intérieur une fonction (s):

t.createTerm(termText); 

Il semble que la méthode de createTerm a été retiré de l'API Lucene 4.3.0, ...

Je suis actuellement en train de créer simplement le terme avec le constructeur,

Term term = new Term(field,text); 

Je viens de penser à vérifier la meilleure façon de créer un terme en utilisant la dernière API Lucene. Quelqu'un peut-il me guider s'il vous plaît?

Répondre

2

Très simple: nouvelle clause (fieldName, termText)

La raison pour le constructeur supplémentaire et createTerm() 3.x Lucene et avant était le coût supplémentaire d'interner (String.intern()) la nom de domaine. Dans Lucene 4.0, les noms de champs ne sont plus internés, car la structure de l'index a changé et le champ < -> Comparaisons de champs dans les énumérations terminales n'est plus nécessaire. Il suffit donc de créer un terme en utilisant le constructeur.

En général Terme est juste un wrapper léger et n'est plus un composant fondamental de Lucene, il est juste utilisé pour la "rétrocompatibilité" avec les versions antérieures et principalement utilisé uniquement pour construire Query comme nouveau TermQuery (Term), ... Du point de vue de la mise en œuvre, dans Lucene 4.x chaque champ est comme un index séparé, les termes de chaque champ sont représentés par la nouvelle classe BytesRef, qui est une tranche d'un plus grand byte [] tableau contenant les données de plusieurs termes d'un champ dans l'index.

Uwe

http://lucene.472066.n3.nabble.com/Best-way-to-construct-term-using-Lucene-4-3-0-API-td4062388.html

Questions connexes