domingo, 4 de julio de 2010

Ámbitos de búsqueda con referencias contentclass

Aunque esta información hace tiempo que corre por la red, el otro dia lo sufrimos en un proyecto, y por eso me animo a escribir el post con otra lista de referencia válida.

Tanto en SharePoint 2007 como en SharePoint 2010, cuando creamos un ámbito de búsqueda, podemos definir una regla en su definición mediante la propiedad de búsqueda contentclass, que especifican un tipo de contenido concreto dentro del SharePoint.

Si buscais en google, encontrareis varias listas de este tipo, donde por ejemplo este enlace o este otro donde se especifica que las listas personalizadas se referencian mediante STS_List y los ítems de las listas personalizadas mediante STS_ListItems, sin embargo, esto no es correcto. Si los añadís dentro de las normas de vuestros ámbitos de busqueda, observareis que siempre os devuelve 0 ítems filtrados, ya que no se están referenciando correctamente.

La referencia correcta es STS_List_GenericList para las listas personalizadas y STS_ListItem_GenericList para los ítems de las listas personalizadas. El resto de referencias no presentan ningún problema, así que una lista válida de contentclas podría ser la siguiente:

STS_Web --> Sitio
STS_List_850 --> Librería de páginas
STS_ListItem_850 --> Página
STS_List_DocumentLibrary --> Librería de documentos
STS_ListItem_DocumentLibrary --> Documentos
STS_List_GenericList --> Lista personalizada
STS_ListItem_GenericList --> Ítem personalizado
STS_List_Links--> Lista de Enlaces
STS_ListItem_Links --> Enlace
STS_List_Tasks --> Lista de tareas
STS_ListItem_Tasks -->Tarea
STS_List_Events --> Lista de eventos (calendario)
STS_ListItem_Events --> Evento (cita de calendario)
STS_List_Announcements --> Lista de anuncios
STS_ListItem_Announcements --> Anuncio
STS_List_Contacts --> Lista de Contactos
STS_ListItem_Contacts --> Contacto
STS_List_DiscussionBoard --> Lista de discusiones (foros)
STS_ListItem_DiscussionBoard --> Respuestas a una discusión
STS_List_IssueTracking --> Issue Tracking List
STS_ListItem_IssueTracking  --> Issue Tracking List Item
STS_List_GanttTasks --> Project Tasks List
STS_ListItem_GanttTasks --> Project Tasks List Item
STS_List_Survey --> Survey List
STS_ListItem_Survey --> Survey List Item
STS_List_PictureLibrary --> Picture Library
STS_ListItem_PictureLibrary --> Picture Library Item
STS_List_WebPageLibrary --> Web Page Library
STS_ListItem_WebPageLibrary --> Web Page Library Item
STS_List_XMLForm --> Form Library
STS_ListItem_XMLForm --> Formulario

El ejemplo más normal es que quisierais crear un ámbito de búsqueda que, a partir de una URL base, os retornara únicamente los elementos de una lista personalizada (excluyendo, incluso, el típicamente molesto allitems.aspx), para ello tendríamos que crear unas cuantas reglas dentro del ámbito:

1.- Incluir la URL base a partir de la cual queramos incluir los elementos del ámbito.
2.- Excluir todos aquellos tipos de contenido que no nos interesen (en este caso serían todos excepto el STS_ListItem_GenericList)

Ejemplo de generación de una de las normas de exclusión en la definición del ámbito.

En este punto, hace falta recordar que la lógica del SharePoint es la de primero aceptar la regla (o reglas) de inclusión como definición principal del ámbito, a partir de la cual se aplican las reglas de exclusión. Es decir, filtra a partir de un conjunto definido de inclusiones.

También recordar que antes de efectuar una indexación completa para obtener la definición del ámbito, hace falta compilar primero el ámbito generado (si no, estaremos haciendo un crawl sin tener en cuenta las reglas creadas en el ámbito desde su última compilación).
Con la esperanza de evitar que alguien se vuelva majareta configurando correctamente los ámbitos de búsqueda, ya me despido hasta el próximo post.

¡¡Un saludo!!

4 comentarios:

Beatriz dijo...

Hola Ignasi! En tu blog estoy descubriendo muchos aspectos de SharePoint 2010. Gracias! ^^

Aún así, algunas cosillas no me están funcinando del todo bien en mi SP server...

Por ej: he creado un centro de búsqueda básica, que es el único que me aparece, y no puedo personalizar la búsqueda de personas... No tengo disponibles los cuadros de búsqueda ni otros webparts como "People Refinement", entre otros muchos...

En lugar de aparecer todas las categorías de webparts del SP server, sólo me aparecen las 5 categorías básicas de webparts, igual que en el Foundation.

Y con los sitios igual. Por ej: me aparece el repositorio de visio pero no el centro de búsqueda FAST.

Lo que más me preocupa es montar el buscador de personas...

¿Sabes cómo se podrían habilitar los webparts de búsqueda para poder usarlos?

Un millón de gracias!

(¿Qué haríamos sin los blogs?)

Beatriz dijo...

Nota:
Las características Enterprise están habilitadas.

Beatriz dijo...

Como Juan Palomo... yo me lo guiso y yo me lo como!

Ya he solucionado el problema! Me he creado una nueva colección de sitios y ahí sí me deja elegir la plantilla de Centro de búsqueda Enterprise. Además, salen todos los webparts.

(No te he dejado nada de tiempo para responder... pero muchas gracias de todas formas! ;)

Ignasi Tebé Tena dijo...

Vaya! Qué fácil me lo has puesto esta vez. Confío en poder ayudarte en la siguiente!!

:-D