Contenu non structuré dans la vitrine

La recherche de contenu non structuré nécessite deux requêtes, puisque le contenu non structuré est indexé dans un noyau différent. L'une des requêtes obtient les ID connexes en effectuant une recherche dans la zone unstructure du contenu structuré, tandis que l'autre requête recherche dans l'index non structuré en utilisant les mots clés et la zone des ID générés lors de la première recherche.

Deux requêtes sont utilisées, car la liste de résultats doit contenir des informations à partir de l'index de contenu structuré et de l'index de contenu non structuré. Etant donné que les deux résultats ont leurs propres paramètres de tri et de pagination, ils sont classés dans l'ordre suivant :
  1. Résultats de la recherche de contenu structuré.
  2. Résultats de la recherche de contenu non structuré.
Le processus de recherche appelle l'API SolrJ pour afficher la chaîne de requête dans le gestionnaire de requêtes. Deux invocations sont impliquées :
  • La première requête affiche le mot clé et les portées des recherches dans le noyau de l'index des produits, afin de récupérer la liste d'ID des entrées du catalogue La portée de recherche inclut en outre la zone unstructure.
  • La deuxième requête affiche le mot clé et la liste d'ID de retour de la première requête dans le noyau d'index de contenu non structuré, pour récupérer le résultat mis en évidence et l'ID d'entrée de catalogue.

Résultats de recherche affichés dans la vitrine

Les étapes d'activation suivantes permettent d'afficher le résultat de la recherche de la pièce jointe du produit dans la vitrine :
  1. Enregistrez le générateur d'expression pour la nouvelle requête de recherche. Par exemple :
    
    <expression-builder>
    		<name>getCatalogNavigationAttachmentView</name>
    		<data-type-name>CatalogNavigationView</data-type-name>
    		<expression-template>{_wcf.ap='$accessProfile$';_wcf.search.profile='$searchProfile$';_wcf.search.term='$searchTerm$';_wcf.search.type='$searchType$';_wcf.search.exclude.term='$filterTerm$';_wcf.search.exclude.type='$filterType$';_wcf.search.manufacturer='$manufacturer$';_wcf.search.price.minimum='$minPrice$';_wcf.search.price.maximum='$maxPrice$';_wcf.search.facet='$facet$';_wcf.search.sort='$orderBy$';_wcf.search.meta='$metaData$'}/CatalogNavigationView</expression-template>
    		<param>
    			<name>accessProfile</name>
    			<value>IBM_Store_CatalogEntrySearch</value>
    		</param>
    		<param>
    			<name>searchType</name>
    			<value>0</value>
    		</param>
    		<param>
    			<name>searchProfile</name>
    			<value>IBM_findCatalogEntryByUnstructureField</value>
    		</param>
    	</expression-builder>
    
  2. Dans le fichier JSP de vitrine, pointez le paramètre expressionBuilder vers le générateur d'expression nouvellement créé. Par exemple :
    
    <wcf:getData type="com.ibm.commerce.catalog.facade.datatypes.CatalogNavigationViewType" var="catalogNavigationView" 
    	expressionBuilder="getCatalogNavigationAttachmentView" scope="request" varShowVerb="showCatalogNavigationView" 
    	maxItems="${pageSize}" recordSetStartNumber="${WCParam.beginIndex}" scope="request">
    <wcf:param name="searchProfile" value="${searchProfile}" />
    	<wcf:param name="searchTerm" value="${WCParam.searchTerm}" />
    	<wcf:param name="searchType" value="${searchType}" />
    	<wcf:param name="metaData" value="${WCParam.metaData}" />
    	<wcf:param name="orderBy" value="${WCParam.orderBy}" />
    	<wcf:param name="facet" value="${WCParam.facet}" />
    	<wcf:param name="filterTerm" value="${WCParam.filterTerm}" />
    	<wcf:param name="filterType" value="${WCParam.filterType}" />
    	<wcf:param name="manufacturer" value="${WCParam.manufacturer}" />
    	<wcf:param name="minPrice" value="${WCParam.minPrice}" />
    	<wcf:param name="maxPrice" value="${WCParam.maxPrice}" />
    	<wcf:contextData name="storeId" data="${WCParam.storeId}" />
    </wcf:getData>
    
  3. Dans la page de magasin, analysez le BOD renvoyé et extrayez les informations de la pièce jointe correspondante pour les afficher sur la page. Par exemple :
    
    <c:forEach var="attachment" items="${catEntry.attachments}" varStatus="att_status">
    <c:set var="attachmentName" value="${attachment.metaData['name']}" />
    <c:set var="attachmentPath" value="${attachment.attachmentAssetPath}" />
    <c:set var="attachmentID" value="${attachment.attachmentAssetID}" />
    <c:set var="attachmentImage" value="${attachment.metaData['image']}" />
    <a  href="${storeImgDir}${attachmentPath}" id="WC_CatalogEntryDBThumbnailDisplayJSPF_<c:out value='${attachmentID}'/>_attachment_links_11" class="h_tnav_but">
    	<img src="${jspStoreImgDir}${attachmentImage}" alt="" align="left"/>
    	<c:out value="${attachmentName}" escapeXml="false"/>
    </a>
    </c:forEach>