Mostrando entradas con la etiqueta Search. Mostrar todas las entradas
Mostrando entradas con la etiqueta Search. Mostrar todas las entradas

jueves, 29 de diciembre de 2011

Cómo configurar IFilter en SharePoint 2010

SharePoint 2010 dispone de un motor de búsqueda (Enterprise) que permite buscar sobre todos los documentos y elementos de nuestros sites. Por defecto el buscador realizará una indexación sobre las propiedades de los documentos o elementos y buscará dentro del contenido de los ficheros Office y txt. El problema lo encontraremos con  los ficheros PDF ya que por defecto el motor de búsqueda no es capaz de indexar el contenido del fichero y se limitará a indexar sus propiedades. Si realizamos una búsqueda sin IFIlter todos los ficheros PDF aparecerán en el buscador como elementos de lista (con la url DispForm.aspx) en lugar de mostrarse como documentos y con la url al documento PDF.

Para pode indexar el contenido de ficheros PDF tendremos que instalar en nuestro servidor de Crawling el IFIlter de Adobe.

  • Descargaremos el instalador de IFilter 9 Adobe PDF iFilter 9 for 64-bit platforms
  • Una vez descargado lo instalaremos en todas los servidores que tengan el componente de Crawling activo.
  • En cada servidor donde se haya instalado el IFilter añadiremos una variable de entorno con el valor "C:\Program Files\Adobe\Adobe PDF iFilter 9 for 64-bit platforms\bin\" y a continuación reiniciaremos el servidor para que se aplique el cambio de la variable de entorno.
  • Realizaremos una indexación completa de nuestros orígenes de contenido.

viernes, 29 de abril de 2011

Herramienta de consultas del motor de búsquedas SharePoint

El motor de búsquedas de SharePoint 2010 proporciona una serie de WebParts con los que realizar búsquedas y aplicar filtros sobre los resultados. También podemos extender las funcionalidades del motor de búsquedas mediante las API de búsqueda de SharePoint con las que realizar consultas más específicas y complejas. Disponemos de dos formas de hacer consultas: KeywordQuery y FullTextSQLQuery.

KeywordQuery utiliza una sintaxis sencilla de consulta basada en términos pensada para consultas que no requieran de filtros basados en valores sino en términos.

Una consulta de este tipo quedaría:

SPServiceContext serverContext = SPServiceContext.GetContext(SPServiceApplicationProxyGroup.Default, SPSiteSubscriptionIdentifier.Default); 


SearchServiceApplicationProxy searchProxy = serverContext.GetDefaultProxy(typeof(SearchServiceApplicationProxy)) as SearchServiceApplicationProxy; ResultTable rTable = null; 


using (KeywordQuery kquery = new KeywordQuery(searchProxy))
{
// Filtro KeywordQuery
// ------------
string keywordFiltroTexto = string.Empty;
if (!string.IsNullOrEmpty(Filtro.Texto))
{
keywordFiltroTexto = string.Format(" Title:\"{0}\" ", Filtro.Texto);
}

kquery.QueryText = string.Format("IsDocument:1 {0} SCOPE:\"Eventos\"", keywordFiltroTexto);
kquery.IgnoreAllNoiseQuery = true;
kquery.TrimDuplicates = false;
kquery.RowLimit = maximoNumeroDeResultados - resultados.TablaResultados.Rows.Count;
kquery.ResultTypes = ResultType.RelevantResults;
kquery.KeywordInclusion = KeywordInclusion.AnyKeyword;

ResultTableCollection resultsll = kquery.Execute();
rTable = resultsll[ResultType.RelevantResults];
TablaResultados.Load(rTable, LoadOption.PreserveChanges);
TablaResultadosRecomendados.Load(rTable, LoadOption.PreserveChanges);
resultados.QuisoDecir = resultsll.SpellingSuggestion;
}



Con  FullTextSQLQuery podremos realizar consultas con una sintaxis similar a la de SQL con la que construir consultas complejas y muy específicas. Una consulta con esta sintaxis quedaría de la siguiente forma:



// Ejecuta la búsqueda con FullTextSqlQuery  
// -------------------------------------------
using (FullTextSqlQuery buscador = new FullTextSqlQuery(searchProxy))
{
buscador.AuthenticationType = QueryAuthenticationType.NtAuthenticatedQuery;

buscador.QueryText = string.Format("SELECT Title, Rank, Size, Descripcion, Write, Path, Keywords, Estado, FechaFinal, FechaInicial FROM scope() WHERE ( (\"SCOPE\" = 'Eventos') AND ( FREETEXT(DefaultProperties,'{0}') ORDER BY Rank DESC", fullFiltroTexto);
buscador.ResultTypes = ResultType.RelevantResults;
buscador.RowLimit = maximoNumeroDeResultados;
buscador.IgnoreAllNoiseQuery = true;
buscador.TrimDuplicates = false;
buscador.KeywordInclusion = KeywordInclusion.AnyKeyword;

ResultTableCollection results = buscador.Execute();
rTable = results[ResultType.RelevantResults];
TablaResultados.Load(rTable, LoadOption.OverwriteChanges);
TablaResultadosRecomendados.Load(rTable, LoadOption.OverwriteChanges);
}



 



El problema lo encontramos a la hora de construir estas consultas durante el desarrollo, ya que no siempre resultan sencillas y en ocasiones necesitamos conocer que resultados devuelve. Para ello disponemos de la herramienta gratuita Search Explorer con la que podremos consultar los ámbitos disponibles, las propiedades mapeadas y los más importante construir y probar nuestras consultas sobre el motor de búsqueda en el momento sin necesidad de volver a compilar.



 



image



Desde un servidor con SharePoint 2010 instalado abriremos la aplicación y pulsaremos en “Get Search Apps” para cargar las aplicaciones de servicio de búsqueda disponibles. A continuación realizaremos doble click sobre la aplicación de búsqueda y se cargarán las propiedades del servicio, los ámbitos y las propiedades manejadas disponibles (Managed Properties).



Desde la pestaña “Queries” podremos construir la consulta seleccionando los ámbitos para los que queremos ejecutarla y marcando “Include” en aquellas propiedades manejadas que queramos incluir en la consulta. También podremos realizar un filtro por alguna de la propiedades introduciendo un valor en la casilla “Criteria”.



Una vez seleccionados los elementos sobre los que consultar pulsaremos en “Make SQL” para construir automáticamente la consulta en formato FullTextSQLQuery. Desde “QuerySQL” podremos modificar la consulta o ejecutarla desde el botón “Run Query”. Al hacerlo se abrirá una ventana con los resultados encontrados para la consulta indicada. Es importante que tengáis presente que la consulta se ejecutará con las credenciales del usuario logado en ese momento, de forma que los elementos para los que no tengamos permisos no nos aparecerán.



 



image



image

domingo, 23 de agosto de 2009

Nueva certificación en FAST

Desde Junio podemos certificarnos en desarrollo sobre FAST ESP, “FAST Enterprise Search Platform, Developing”. De momento no nos aporta créditos para ninguna certificación, ni disponemos de material de apoyo, el único material del que disponemos es la página FAST University de la que podremos conseguir apuntarnos a un curso virtual y la biblioteca de recursos de FAST.

Lo que me ha llamado la atención es que la han integrado dentro de la tecnología SharePoint Server 2007 pero no aparece dentro de la sección de certificaciones de Sharepoint.

Aunque personalmente creo que es bueno certificarse en alguna de los MCTS de Sharepoint, en este caso creo que es mejor esperar un poco a que aparezca Sharepoint 2010, seguro que encontraremos novedades respecto a la integración de FAST con Sharepoint.

 

Otro aspecto interesante en esta certificación es que una parte de las habilidades que te exigen se refiere a la configuración de la relevancia de resultados, ranking y gestión de diccionarios. Esto me ha recordado algunos vídeos de Channel 9 que hablaban acerca de la importancia de los resultados:

Jim Mosher: On Interaction Management and the FAST Search Engine

Expert to Expert: Harry Shum - General Purpose Search, Decision Engines and Bing

miércoles, 3 de junio de 2009

Bing y Sharepoint

Las búsquedas federadas nos permiten poder realizar búsquedas e indexaciones de forma remota de manera que en lugar de utilizar el motor de búsqueda de SharePoint sea otro buscador externo el que las realice y nos devuelva el resultado. En las siguiente imagen vemos como podemos obtener el mismo resultado de “Bing” en nuestro WebPart de resultados de Sharepoint. Fijaros como son los mismo resultados y en el mismo orden.

Para utilizar las búsquedas federadas en Sharepoint tenemos que tener o bien el Search server 2008 o el infraestructure update instalado en nuestra granja.

Una vez instalado en la pantalla de configuración de búsquedas indicaremos a Sharepoint como traducir las consultas realizadas desde el webpart de filtro a una query string que entienda el buscador externo. Desde la pantalla de “Ubicaciones Asociadas Externas” añadiremos una nueva ubicación mediante la acción “Nueva ubicación”. A continuación indicaremos el nombre y que utilice el protocolo OpenSearch 1.0/1.1.

En la sección “Información de la ubicación” en la entrada “plantilla de consulta” indicaremos el formato que debe utilizar sharepoint para enviarle las consultas al buscador externo. Para el caso de BING:

http://www.bing.com/search?q={searchTerms}&count={itemsPerPage}&first={startItem}&mkt={language}&format=rss&FORM=SHAREF

Para la entrada “Más resultados” http://www.bing.com/search?q={searchTerms}&first={startItem}&mkt={language}&FORM=SHAREM

Por último en la sección “Mostrar información” podremos configurar el xsl de resultado. En mi caso lo he dejado el formato predeterminado.

Una vez hayamos configurado la ubicación externo, desde nuestra página de resultados agregaremos el WebPart “Resultados asociados externos ” y en la propiedad “Ubicación” seleccionaremos el nombre de nuestra Ubicación. Una vez hayamos aplicado los cambios ya deberían verse resultados. En caso que no se vea nada puede que hayamos escrito mal la url de ubicación, tengamos problemas de red o de autenticación.


miércoles, 18 de febrero de 2009

Error fatal CManagedResources.GetScopeId

Sharepoint nunca te deja de sorprender, cada día me pregunto “¿qué me pasará hoy?”.

Hoy lo hizo con un bonito pantallazo:


El error es nítido!!, resulta que estaba haciendo una aplicación de consola que validaba que estuvieran construidos correctamente una serie de elementos, y para ello utilizaba FullTextSqlQuery para algunas búsquedas. Que sorpresa la mía que al indicar el scope en la consulta me apareció este mensajito.

El problema era que estaba utilizando la dll Microsoft.Sharepoint.Search sobre un MOSS, simplemente cambiando la referencia por la de Microsoft.Office.Server.Search todo se solucionó. En mi código solo tuve que cambiar el using y la llamada al constructor del FullTextSqlQuery.

Espero que os sirva.

[Sharepoint] HRESULT: 0x80040D1B

Este error me ocurría al intentar acceder a la configuración de búsquedas del SSP en MOSS.  Al crear un dominio en mi máquina virtual pasaron todos los usuarios locales a ser usuarios del dominio, por lo que los servicios estaban configurados con la referencia antigua. Aún cambiando las identidades de todos los pool de aplicaciones y los servicios windows me seguía dando el error.

La solución consistió en entrar en la administración central > Operaciones > Servicios del servidor, seleccionar “Office Sharepoint Server Search” y cambiar las credenciales del servicio con un usuario del dominio y un iisreset.

Espero que os sirva.

 

Los errores que me daban eran:

Event Type:    Error
Event Source:    Office SharePoint Server
Event Category:    Servicios compartidos de Office Server
Event ID:    6481
Date:        18/02/2009
Time:        11:27:21
User:        N/A
Computer:    W2K3R2
Description:
No se pudo ejecutar el trabajo del servidor de aplicaciones para la instancia de servicio Microsoft.Office.Server.Search.Administration.SearchServiceInstance (b4b27e04-22fb-4be0-86f3-2dbb418adbc1).

Motivo: Exception from HRESULT: 0x80040D1B

Detalles de soporte técnico:
System.Runtime.InteropServices.COMException (0x80040D1B): Exception from HRESULT: 0x80040D1B
   at Microsoft.Office.Server.Search.Administration.SearchServiceInstance.SynchronizeDefaultContentSource(IDictionary applications)
   at Microsoft.Office.Server.Search.Administration.SearchServiceInstance.Synchronize()
   at Microsoft.Office.Server.Administration.ApplicationServerJob.ProvisionLocalSharedServiceInstances(Boolean isAdministrationServiceJob)

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

 

 

Event Type:    Error
Event Source:    Office SharePoint Server
Event Category:    Servicios compartidos de Office Server
Event ID:    6482
Date:        18/02/2009
Time:        11:27:36
User:        N/A
Computer:    W2K3R2
Description:
No se pudo ejecutar el trabajo de administración del servidor de aplicaciones para la instancia de servicio Microsoft.Office.Server.Search.Administration.SearchAdminSharedWebServiceInstance (75449392-d46b-4c1a-9604-8997018cdb3d).

Motivo: El nombre de cuenta especificado no es válido.
Parameter name: account

Detalles de soporte técnico:
System.ArgumentException: El nombre de cuenta especificado no es válido.
Parameter name: account ---> System.Security.Principal.IdentityNotMappedException: Some or all identity references could not be translated.
   at System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess)
   at System.Security.Principal.NTAccount.Translate(Type targetType)
   at Microsoft.Office.Server.Utilities.WindowsSecurity.ValidateAccount(NTAccount account, Boolean throwIfInvalid)
   --- End of inner exception stack trace ---
   at Microsoft.Office.Server.Utilities.WindowsSecurity.ValidateAccount(NTAccount account, Boolean throwIfInvalid)
   at Microsoft.Office.Server.Administration.SharedAccessRule.Validate()
   at Microsoft.Office.Server.Administration.SharedComponentSecurity.SetAccessRule(SharedAccessRule accessRule)
   at Microsoft.Office.Server.Administration.SharedResourceProvider.GetApplicationSecurity()
   at Microsoft.Office.Server.Administration.SharedWebServiceInstance.ProvisionSharedResourceProviderWebConfigSettings(SharedResourceProvider srp)
   at Microsoft.Office.Server.Administration.SharedWebServiceInstance.Synchronize()
   at Microsoft.Office.Server.Administration.ApplicationServerJob.ProvisionLocalSharedServiceInstances(Boolean isAdministrationServiceJob)

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.