2010-01-14 25 views
7

Estoy considerando/trabajando en la implementación de un motor de búsqueda para los distintos tipos de contenido de nuestra compañía, y estoy tratando de entender a Lucene (específicamente el sabor de .net).¿Los documentos en Lucene deben contener los mismos campos?

Por el momento, mi pregunta principal es si los documentos de un índice deben contener los mismos campos.

Por ejemplo:

Document1:

  • Título: "Estoy un documento, bebé"
  • cuerpo: "Aquí hay algunas cosas importantes"
  • Latitud: 26.12224
  • Longitud: -65.23124
  • Marca: Toshiba

Documento2:

  • Título: "Otro documento por mí"
  • corporal: "lorem ipsum y todo eso"
  • Categoría: Artículos
  • Autor: Sir Loin

... y así sucesivamente

Respuesta

14

Nada en las fuerzas lucene uniformidad.

Si busca en un campo llamado 'fred', y no todos los documentos tienen 'fred', esa búsqueda no encontrará los documentos de fredless.

+3

Eres mi nuevo héroe. – Matt

0

Si desea hacer un índice en un campo específico, I g Todos los documentos deben tener los mismos campos.

+0

Eso es lo que ha dicho mi intuición hasta ahora, pero no he podido encontrar nada que indique concretamente de una forma u otra. – Matt

0

Todo depende de cómo haya indexado sus documentos en Lucene. Todos los Document s deben agregarse al índice. Puede usar IndexWriter o escribir su propia clase para hacer eso. Antes de agregar un documento al índice, debe dividirlo en pares de valores nominales. Posteriormente puede consultar Lucene para estos valores de nombre usando QueryParser. Por ejemplo, la siguiente consulta devolverá todos los documentos con las frases "Soy un documento, bebé" en el título y "Aquí hay algunas cosas importantes" en el cuerpo.

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

Acabo de mostrar un ejemplo simple pero puede crear una consulta de búsqueda más potente, de muchas maneras diferentes.

Las clases que he mencionado son de java pero .net deberían ser similares.

Cuestiones relacionadas