Codepoint

by Trentia Consulting

SharePoint 2013: Cambios en los servicios de búsqueda mediante programación

Después de llevar varios meses trabajando en diferentes proyectos sobre la nueva plataforma SharePoint 2013, creemos que va siendo hora de compartir con vosotros nuestras experiencias.

En el siguiente artículo, vamos a comentar los cambios en los servicios de búsqueda y como afectan a la programación. Como sabréis los servicios de búsqueda FAST se han incorporado al servicio de búsqueda estándar. Esto provoca que los antiguos modelos de programación, como el FullTextSqlQuery, estén marcados como deprecated en la actual versión y por tanto no los podremos utilizar.

En primer lugar, hemos de incoporar a nuestro proyecto las siguientes referencias Microsoft.Office.Server y Microsoft.Office.Server.Search

Con la nueva versión aparece en escena SearchExecutor, que será nuestro objeto principal para la búsqueda.

Utilizaremos el siguiente código para devolver resultados de búsqueda a partir de una o varias condiciones

public static DataTable ExecuteKeyWordSearch(string queryText) 
  { 

  ResultTableCollection rtc = null; 

   DataTable retResults = new DataTable();


   Dictionary queries = new Dictionary(); 

 using (SPSite site = new SPSite(SPContext.Current.Site.ID)) 
   { 

   using (KeywordQuery query = new KeywordQuery(site)) 

   { 

   query.QueryText = queryText; 

   query.KeywordInclusion = KeywordInclusion.AllKeywords; 

   query.RowLimit = 500; 

   query.SelectProperties.Add("Path"); 

    SearchExecutor se = new SearchExecutor(); 

   rtc = se.ExecuteQuery(query);


   if (rtc.Count > 0) 

   { 

   var results = rtc.Filter("TableType", KnownTableTypes.RelevantResults); 

Etiquetas de Technorati:
//results = rtc.Filter("TRENTIAContentType", "CV"); if (results != null && results.Count() >= 1) retResults.Load(results.First(), LoadOption.OverwriteChanges); } } } return retResults; }

 

Con FullTextSqlQuery hacíamos servir una sintaxis similar a SQL para realizar búsquedas e incluir campos a los resultados de la búsqueda. Actualmente esto ya no funciona así. La sintaxis que tendremos que hacer servir a partir de ahora será la siguiente:

En el caso que deseamos filtrar por algún tipo de contenido, le pasaremos por parámetro (queryText) un string con la siguiente sintaxis: ContentType:CV

En fin, espero os sirva de utilidad a la hora de introduciros en el nuevo modelo de búsquedas de SharePoint 2013.

Disponible Service Pack 2 de SharePoint 2010

Ya tenemos disponible el SP2 de SharePoint 2010, centrado en resolver problemas relacionados a seguridad, estabilidad y escalabilidad. También ofrece mejor compatibilidad con Windows 8, Internet Explorer 10, Office 2013 y SharePoint 2013.

Podéis ampliar información en http://blogs.office.com/b/sharepoint/archive/2013/07/23/check-out-the-sharepoint-server-2010-service-pack-2.aspx

Para descargarlo en:

Trentia Consulting presenta las novedades de SharePoint 2013 en Cal Calderón (Viladecans)

sharepoint2013_3Trentia Consulting coorganizó con el centro de innovación de Microsoft para la productividad (www.micproductivity.com) un nuevo seminario sobre las novedades de SharePoint 2013 y de cómo mejorar la productividad empresarial a través de las herramientas empresariales.

Básicamente se presentó una breve descripción de qué es Microsoft SharePoint para pasar posteriormente a ver en más profundidad cuales son las novedades que aporta la nueva versión 2013. Además, antes de finalizar, los asistentes pudieron ver un caso práctico en tiempo real.

En los siguientes enlaces podéis encontrar el material que se presentó:

Desde aquí damos las gracias a todos los asistentes.


Si no pudiste asistir al anterior seminario.… no pierdas esta nueva oportunidad: Seminario Microsoft SharePoint 2013

Aplicación práctica y tendencias para mejorar la iProductividad de las Empresas

2013_logo-sharepoint_2De este modo Trentia Consulting te da la bienvenida a la nueva generación de tecnologías SharePoint. Estamos actualizando nuestros servicios para dar cabida a implantaciones y desarrollos en SharePoint 2013. Ofrecemos a nuestros clientes la posibilidad de implantar ya con la más novedosa plataforma de colaboración del mercado.

Agenda del seminario:

9 MAYO 2013 | 9:00.12:30 | Can Calderon, C/Andorra, 64, 08840 (Viladecans)

09:00 - 09:20 Bienvenida
09:20 - 09:50

La iProductividad en las organizaciones, 12 recomendaciones básicas para mejorarla.
Ramon Costa. MIC Productivity

09:50 - 10:20

Microsoft SharePoint, más allá de una plataforma de colaboración. Un entorno de productividad.
Anna Vilalta Gili. Trentia Consulting

10:20 - 10:40

Microsoft Lync 2013. Demostración práctica para el día a día.
Ramon Costa. MIC Productivity

10:40 - 11:10 Café Relacional
11:10 - 11:40

Microsoft SharePoint 2013. Novedades y principales funcionalidades del entorno.
Xavier Tirado. Trentia Consulting

11:40 - 12:00

Casos prácticos de aplicación de Microsoft SharePoint.
Ruben Claramunt. Trentia Consulting

12:00 - 12:20 Turno abierto de intervenciones
12:20 - 12:30 Clausura

 

Trentia Consulting presenta las novedades de SharePoint 2013 en el Parque Tecnológico del Vallès.

El pasado jueves, día 24 de enero de 2013, Trentia Consulting, coorganizada con el centro de innovación de Microsoft para la productividad (www.micproductivity.com).

La jornada llevada a cabo giró en torno a la plataforma de colaboración, comunicación y productividad Microsoft SharePoint 2013.

Básicamente se presentó una breve descripción de qué es Microsoft SharePoint para pasar posteriormente a ver en más profundidad cuales son las novedades que aporta la nueva versión 2013. Además, antes de finalizar, los asistentes pudieror ver un caso práctico en tiempo real.

En los siguientes enlaces podéis encontrar el material que se presentó:

Agradecemos a todos los asistentes su participación en el acto. Está previsto repetir el seminario en fechas próximas para aquellas personas que no hayan podido asistir.

seminari

SharePoint 2013 App con TypeScript

Tal y como dicen en su página, TypeScript es un lenguaje de programación para hacer escalable el desarrollo con JavaScript.

Últimamente se han creado grandes frameworks de JavaScript (quizás el más conocido sea JQuery) que muestran lo que se puede llegar a hacer con ese lenguaje. Con la aparición de HTML5 la tendencia es usar cada vez más JavaScript, cargando el lado del usuario de más funcionalidad.

TypeScript es un supra-conjunto de JavaScript cuya compilación resulta ser JavaScript plano, es decir, se puede ejecutar en cualquier navegador y sistema operativo, y es Open Source.

Además, se puede usar para desarrollar aplicaciones de SharePoint 2013. Os dejo un link en el que explica paso a paso cómo se configura y se presenta un ejemplo.

Microsoft.SharePoint.SPException: This view requires at least Microsoft Internet Explorer 7.0, Mozilla FireFox 3.0, or Apple Safari 3.0.

Si alguna vez os encontráis con que un portal en SharePoint funciona lentamente e incluso llega a quedarse colgado el primer paso a seguir es echar un vistazo a los logs ULS (unified log system).

Si veis que os aparecen un montón de mensajes como éste:

Microsoft.SharePoint.SPException: This view requires at least Microsoft Internet Explorer 7.0, Mozilla FireFox 3.0, or Apple Safari 3.0.    at Microsoft.SharePoint.WebControls.Gantt.OnLoad(EventArgs e)     at System.Web.UI.Control.LoadRecursive()     at System.Web.UI.Control.AddedControl(Control control, Int32 index)     at Microsoft.SharePoint.WebPartPages.ListViewWebPart.CreateChildControls()     at Microsoft.SharePoint.WebPartPages.WebPartMobileAdapter.CreateChildControls()     at System.Web.UI.Control.EnsureChildControls()     at System.Web.UI.Control.PreRenderRecursiveInternal()     at System.Web.UI.Control.PreRenderRecursiveInternal()     at System.Web.UI.Control.PreRenderRecursiveInternal()     at System.Web.UI.Control.PreRenderRecursiveInternal()     at System.Web.UI.Control.PreRenderRecursiveInternal()     at System.Web.UI.Control.PreRenderRecursiveInternal()     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Significa que las vistas Gantt de vuestras listas están dando error en los rastreos de la búsqueda.

Para solucionarlo seguid los siguientes pasos:

  1. Abrir RegEdit en el servidor
  2. Ir a HKLM\SOFTWARE\Microsoft\Office Server\14.0\Search\Global\Gathering Manager
  3. Cambiar la clave UserAgent de:
    • Mozilla/4.0 (compatible; MSIE 4.01; Windows NT; MS Search 6.0 Robot)
    • por:
    • Mozilla/4.0 (compatible; MSIE 7.0; Windows NT; MS Search 6.0 Robot)
  4. Finalmente, reinicia los servicios de búsqueda.

SQL Server 2012: Column Store Index

Column Store Index es una nueva característica de SQL Server 2012 que mejora el rendimiento del almacenamiento de datos. A diferencia de los índices normales o pilas que almacenan los datos en una estructura de árbol B, el Column Store Index almacena los datos en columnas y usa una compresión para reducir los accesos a disco E/S necesarios para atender las solicitudes con un modo de procesamiento por lotes.

Este índice ha sido diseñado para acelerar significativamente consultas comunes d ealmacenamiento de datos que requieren análisis, agregación y filtrado de grandes cantidades de datos o unión de múltiples tablas con un esquema en estrella. En este artículo crearemos dos tablas con la única diferencia que una trabajará con un índice regular y la otra con una Column Store Index.

La sintáxis para la creación de una Column Store Index sería:

CREATE NONCLUSTERED COLUMNSTORE   INDEX  ON  (, , , ... 
A continuación mostraré un ejemplo de creación de este tipo de índice. Primero crearé dos tablas:
CREATE TABLE TablaIndiceRegular(
       [ID] [int]   NOT NULL,
       [DetalleID] [int] IDENTITY(1,1) NOT NULL,
       [ProductoID] [int] NOT NULL,
       [Total] [money],
CONSTRAINT [PK_TablaConIndiceRegular_Index]   
PRIMARY KEY CLUSTERED 
(
       [ID] ASC,
       [DetalleID] ASC
)) ON [PRIMARY]
GO

CREATE TABLE TablaColumnStoreIndex(
       [ID] [int]   NOT NULL,
       [DetalleID] [int]   IDENTITY(1,1) NOT NULL,
       [ProductoID] [int] NOT NULL,
       [Total] [money],
CONSTRAINT [PK_TablaColumnStoreIndex_Index]   
PRIMARY KEY CLUSTERED 
(
[ID] ASC,
[DetalleID] ASC
)) ON [PRIMARY]
GO

 

Y por último crearé un índice regular (campos ProductoID y Total) en la primera tabla y un índice del tipo Column Store Index (campos ProductoID y Total) en la segunda tabla.

CREATE_NONCLUSTERED_INDEX[XI_TablaConIndiceRegular_Index_ProductoID_Total]
ON SalesOrderDetailWithRegularIndex
(ProductID, LineTotal)
 
CREATE_NONCLUSTERED_COLUMNSTORE_INDEX[XI_TablaColumnStoreIndex_Index_ProductoID_Total]
ON SalesOrderDetailWithColumnStoreIndex
(ProductID, LineTotal)
Los índices también se pueden crear usando el asistente en SSMS (SQL Server Management Studio) ý no sólamente mediante T-SL script.
Si se hace doble click en el índice creado se puede consultar y modificar las propiedades del índice creado.
Si en las tablas creadas se añadimos millones de registros y se ejecuta una consulta simple como puede ser por ejemplo:
SELECT ProductoID, SUM(Total) AS 'SumaTotal'   FROM 

GROUP BY ProductoID
ORDER BY ProductoID

 

Si miramos mediante SSMS el coste relativo a la consulta ejecutada sobre cada una de las tablas se puede apreciar una diferencia abismal ya que al trabajar con la tabla que usa el Column Store Index hablamos de un coste que se mueve cerca del 10%, en cambio trabajando con la tabla que tiene el índice regular hablamos de un coste relativo al 90%.

Esto se debe a que en SQL Server 2012 se ha introducido un nuevo modo de ejecución llamado modo por lotes, que procesa lotes de filas, en caso de procesar fila a fila que es la forma de trabajar de los índices regulares.

Quiero finalizar esta reseña nombrando un estudio realizado por Microsoft en un equipo de 32bits cons 256GB de RAM y una tabla de 1TB de datos (1,44 mil millones de filas) contrastando que las consultas que se realizaban habían variado su tiempo de respuesta de forma más que significativa puesto que consultas que tardadan 500 segundos originalmente, se ejecutaban en un tiempo de 1,1 segundos.

Confirmada por Microsoft la fecha de lanzamiento de Windows 8

windows8En la reunión anual de la empresa de ventas y posteriormente una publicación en el blog, Microsoft ha revelado que Windows 8 será lanzado al mercado el 26 de octubre de 2012.

Este sistema ha sido calificado por parte de Microsoft como el rediseño más importante realizado en la interfaz de usuario en más de una década.

El punto más novedoso en la interfaz del sistema, es que incluye una interaz táctil, apodada "Metro". 

Aquí os dejo un enlace para que podáis ver más información referente a dicha interfaz.

Con Windows 8, Microsoft pone a disposición del mercado un sistema único que puede ser utilizado tanto en PCs de escritorio como en dispositivos móviles, en oposición a las decisiones tomadas por sus competidores.

Inserción de mapas de Google interactivos en SharePoint 2010

Si queremos insertar el código de un mapa interactivo proporcionado por Google en una página de publicación de SharePoint 2010 nos daremos cuenta que SharePoint no nos deja. Esto es debido a que el código generado por Google contiene un frame.

De todas formas, aquí os dejo una solución para poder insertarlos:

  1. Primero necesitamos el código HTML proporcionado por Google.
  2. 1

  3. Abrimos un bloc de notas (notepad) i pegamos el código allí.
  4. Guardamos el documento .txt en una biblioteca de documentos.
  5. 2[4]
  6. Abrimos el documento y guardamos la url en un sitio para tenerla a mano (ya que la necesitaremos posteriormente).
  7. Vamos a la página en la que queremos insertar el mapa y la editamos. Situamos el cursor donde deseemos y clicamos en las pestañas superiores: Insertar > Elemento web.
    3
  8. En el listado de elementos web elegimos: Medios y contenido > Editor de contenido y lo agregamos.
    4
  9. Una vez hecho esto, veremos que se nos ha agregado un “contenedor” que se muestra de la siguiente manera:
    5
  10. Editamos el elemento web.
    6
  11. En la caja de texto de “Vínculo del contenido” escribimos la url del documento que hemos subido antes.
    7
  12. Guardamos la página y la publicamos. Ya deberíamos ver el mapa en nuestra página.
    8