Buscando contenidos en Liferay con SearchEngineUtil

16-02-2015
 

Search

Search


Liferay nos aporta una API muy potente para buscar contenidos dentro de sus contenidos a través de la classe ‘SearchEngineUtil’.

En el ejemplo que os propongo hacemos búsquedas usando el método ‘search’ de la classe y le pasamos dos parámetros:

El primer parámetro es el contexto y allí le configuramos cosas como la instancia de búsqueda, en que sites debe buscar, que tipo de contenidos(Contenidos web, entradas de blog, posts en foros, etc.), categorización, etc.

El segundo parámetro es la búsqueda en sí, pudiendo buscar por distintos campos, por palabra exacta, etc. Incluso podemos definir sub-busquedas pudiendo especificar si debe aparecer, debería aparecer o si no debe aparecer.

Aquí os dejo un ejemplo donde le definimos un contexto que debe buscar solo contenidos web y debe encontrar los que el títol contiene la palabra ‘welcome’.

SearchContext searchContext = SearchContextFactory. getInstance(PortalUtil.getHttpServletRequest( request )); 
searchContext.setEntryClassNames( new String[] { JournalArticle.class.getName() } );

BooleanQuery fullQuery = BooleanQueryFactoryUtil.create(searchContext);
		
	try {
		fullQuery.addTerm( Field.TITLE, "Welcome");
			
		Hits hits =  SearchEngineUtil.search(searchContext, fullQuery);
			
		/* Aquí tratamos los resultados */
	} catch (Exception e) {	e.printStackTrace(); } 

Por cierto, que sepáis que en la nueva versión de Liferay 7 el ‘engine’ para indexar y buscar contenidos dejará de ser Lucene para pasar a ser Elastic Search. Como se os ha quedado el cuerpo? 🙂

Leave a Reply

© Albert Coronado Calzada