Commerce server FreeTextSearch makes me laugh

Ok, el día de hoy veremos como se hace una búsqueda de texto libre dentro de Microsoft Commerce Server 2002. El código que a continuación mostramos actualmente fué desarrollado por el buen Rocky (que durante el fin de semana tuvimos que raparlo por un caso grave de piojos) y es un segmento del código original del sitio que actualmente estamos haciendo (por obvias razones no es el código completo).

¿Como hacemos una búsqueda en Commerce Server 2002 dentro de un catálogo?

Pues relativamente sencillo. El primer paso es declarar nuestros objetos de datos que almacenarán los resultados (en este caso solo usamos un DataSet) pero para tener un control o un filtro adicional sobre los resultados también podríamos crear un DataView sobre el resultado que nos proporcione el DataSet.

Creamos una instancia del objeto CatalogSearch el cual contendrá todos los métodos necesarios para hacer una búsqueda, sin embargo tambien necesitamos crear un objeto de CatalogSearchOptions que nos dará más control sobre los resultados, es decir si quieres buscar sobre una propiedad especifica o bien sobre una variante del producto o el producto en sí mismo.

Después declaramos un arreglo de cadenas que contienen las propiedades a regresar dentro de la búsqueda, muchas veces nuestro catálogo contiene muchas definiciones de propiedad dentro del mismo, por lo que solamente discriminamos cuales serán los necesarios para realizarlas.

Por último ya que tenemos nuestras definiciones bien declaradas, le asignamos a la propiedad  catalogSearch.FreeTextSearchPhrase el valor a buscar y por ultimo le asignamos a nuestro DataSet los resultados usando dsResults = catalogSearch.Search().

1  // Ejemplo de busqueda Commerce Server 2002
2  // Declaramos nuestro dataset
3 DataSet dsResults;
4
5 s = Request.QueryString[«s»];
6 t = Request.QueryString[«t»];
7
8 CatalogSearch catalogSearch = new CatalogSearch();
9
10 CatalogSearchOptions searchOptions = new CatalogSearchOptions();
11
12 searchOptions.ClassTypes = CatalogClassTypes.ProductClass | CatalogClassTypes.ProductFamilyClass | CatalogClassTypes.ProductFamilyForVariantsClass;
13
14 string[] propiedades = new string[]
15 {
16 «ProductID»,
17 «AlbumName»
18 };
19
20 searchOptions.PropertiesToReturnArray = propiedades;
21 catalogSearch.SearchOptions = searchOptions;
22 catalogSearch.CatalogNames = «Prueba»;
23 catalogSearch.FreeTextSearchPhrase = s;
24
25 dsResults = catalogSearch.Search();

Como podemos ver, las búsquedas de búsquedas libres (FreeTextSearch) son sencillas de implementar con la herramienta, lo complicado es definir las reglas de negocio que están alrededor de estas. Por ejemplo, en el sitio que estamos desarrollando; en las búsquedas queremos que el primer «match» nos muestre el arte asociado con el producto, entonces en este caso ya se tiene que hacer un procedimiento adicional sobre el resultado.

Espero que les sirva de algo y suerte!

Cheers!


Comentarios

Deja una respuesta