2010-01-14 9 views
7

J'étudie/travaille sur la mise en œuvre d'un moteur de recherche pour les différents types de contenu de notre entreprise, et j'essaie d'envelopper mon esprit autour de Lucene (en particulier la saveur .net). Pour l'instant, ma question principale est de savoir si les index d'un document doivent contenir les mêmes champs.Les documents de Lucene doivent-ils contenir les mêmes champs?

Par exemple:

Document1:

  • Titre: "Je suis un document, bébé"
  • corps: "Voici quelques choses importantes"
  • Latitude: 26,12224
  • Longtitude: -65,23124
  • Marque: Toshiba

Document2:

  • Titre: "Un autre document par Me"
  • Body: "Lorem ipsum et tout ce jazz"
  • Catégorie: Articles
  • Auteur: Sir Longe

... et ainsi de suite

Répondre

14

Rien dans les forces de lucene uniformise.

Si vous effectuez une recherche sur un champ nommé 'fred', et que tous les documents ne possèdent pas 'fred', cette recherche ne trouvera pas les documents sans franges.

+3

Vous êtes mon nouveau héros. – Matt

0

Si vous souhaitez indexer sur un champ spécifique, I g Tous les documents doivent avoir les mêmes champs.

+0

C'est ce que mon intuition a dit être ainsi, mais je n'ai pas été capable de trouver quelque chose qui énonce concrètement d'une manière ou d'une autre. – Matt

0

Tout dépend de la façon dont vous avez indexé vos documents dans Lucene. Tous les Document doivent être ajoutés à l'index. Vous pouvez utiliser IndexWriter ou écrire votre propre classe pour le faire. Avant d'ajouter un document à l'index, vous devez le décomposer en paires de valeurs de nom. Par la suite, vous pouvez interroger Lucene pour ces valeurs de nom en utilisant QueryParser. Par exemple, la requête suivante retournera tous les documents avec les expressions «Je suis un document, bébé» dans le titre et «Voici quelques choses importantes» dans le corps.

title:("I'm a document, baby") body:("Here are some important things") 

Je viens de montrer un exemple simple, mais vous pouvez créer une recherche plus puissante requête, de plusieurs façons différentes.

Les classes que j'ai mentionnées sont de java mais .net devrait être similaire.

Questions connexes