Faceted search (Drupal) - casussen

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

Casus feb. 2016

Voorbeeld aan de hand van deze tutorial van Beautiful 7 Mind. Niet opgeleverd.

Modules & Installatie

Benodigde modules volgens de tutorial - Sommige dingen kloppen niet:

  • Facet API - facetapi - Laag tusen Search en UI. Essentiëel
  • Search API - search_api - Generiek en al snel nodig
  • Database search - search_api_db - Middleware om database-tabellen te gebruiken als search-index
  • Search facets - search_api_facetapi, submodule van Search API
  • Search Views of Search API Views - search_api_views, submodule van Search API
  • Entity API - entity

Installatie:

drush en -y facetapi, search_api, search_api_facetapi, search_api_views, search_api_db, entity

Content

Een batch van zo'n 700 Drupal Commerce-producten geïmporteerd.

Configureer de search-server

Nieuwe search-server geïnstantiëerd: mijn_search_server van klasse Database services. Er kan gezocht worden op delen van een woord.

Configureer de search index

  • Naam: index_algemeen
  • Item type: node
  • Bundle: Alleen het content-type voor producten in deze webwinkel
  • Server: De server die ik zojuist heb aangemaakt
  • Index immediately
  • Cron trashhold: -1. Dus dat de index nu direct compleet gemaakt wordt → Direct klaar

Configureer welke velden doorzoekbaar zijn

Blocks verschijnen niet

Mogelijke oorzaken:

  • Block caching enabled [1]
  • Bug Facet API
  • Ik moest nog iets met een view doen
  • Databaseserver niet goed geconfigureerd?
  • Iets aan de hand met het theme?

Casus mrt. 2016 - Faceted Search reverse engineered

Dit betreft een site waarop een prototype faceted search werkt. Kan ik dat herproduceren? Kan ik de verschillende mechanismes analyseren? En in het bijzonder: Hoe krijg je een facetblok aan de praat?

Dit is de site met het faceted search-prototype, ook al ziet het blok dat begint met "Filter by product..." er weinig indrukwekkend uit
Display settings voor een facetblok: Search and metadata » Search API » View index » Facets » Configure Display » Global settings. Onder Search IDs staan de beschikbare zoekpagina's vermeld. In dit geval vermoedelijk alledrie maatwerk-views. Indien er geen geschikte zoekpagina's beschikbaar zijn, verschijnen de controls Display voor searches en Search IDs niet

In het voorbeeld in de afbeelding hiernaast, waren dit de search-id's. Dat zijn alledrie view-pagina's:

* search_api_views:pd:page
* search_api_views:kolibrie:page
* search_api_views:kolibrie:page_1

En aan de view-pagina's zelf zie je niet dat dit bijzondere pagina's zijn. Dat zie je pas in de header van de code als je bv. export kiest:

$view = new view();
$view->name = 'pd';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'search_api_index_product_display';
$view->human_name = 'pd';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

Het betreft een view van het type search_api_index_product_display.

Casus aug. 2016 (1)

Installatie modules

drush en -y search_api			# Altijd nodig 
drush en -y search_api_facetapi		# Altijd nodig - geloof ik
drush en -y search_api_db		# Gebruik de database als search-server
drush en -y search_api_views		# ?

Er hoefden geen permissies te worden aangepast.

Server instantiëren

Nieuwe server aangemaakt

Nieuwe server aangemaakt (Administration » Configuration » Search and metadata » Search API):

  • Naam: faceted_search_server
  • Class: Database server - Geen andere classen enabled
  • Minimum word length: 1
  • Search on parts of a word: Ja (vanwege complexe product-aanduidingen)

Index - Basisinstellingen

Ik begreep dat je op een of andere manier de bestaande default index moet gebruiken ivm. bug. Hierbij:

  • Type: Index
  • Name: Default node index
  • Server: faceted_search_server
  • Datasource option: Onveranderd, dus alle type objecten
  • Index items immediately: Ja
  • Cron batch index: -1 (Alles in één keer indexereren)

Index - Fields

  • Standaard zijn diverse velden aangevinkt - Zo gelaten
  • Na toevoegen van het productreferentie-veld dat naar de achterliggende product-entiteit (p1) verwijst, verschijnen alle p1-velden. Hiervan een aantal aangevinkt (wo. dim1 tot en met dim3)
  • Opnieuw laten indexeren. Eerste keer time-out. Tweede keer met een lagere batchgrootte heeft-ie alles geindexeerd.

Index - Filters

Nix aan veranderen.

Index - Facets

Drie facets aangezet:

  • pt_dim1 - Bleek geen data voorhanden te zijn
  • pt_dim2 - Bleek geen data voorhanden te zijn
  • pt_dim3 - Bleek geen data voorhanden te zijn
  • automatic_stop

Facets - Configure displays

Voor de facets pt_dim1 tot en met pt_dim3 de volgende zaken ingesteld:

  • Display widget: Links with checkboxes

Facets - Configure dependencies

Nix veranderen

Facets - Configure filters

Nix veranderen

Casus aug. 2016 (2)

Dit is een vervolg op de casus hiervoor:

  • Te filteren objecten: Koolborstels
  • Content-type (p2): product - Deze bevat twee referentievelden, en verder nix!
  • Achterliggende entiteit (p1): product
  • Daarnaast zijn deze entiteiten gekoppeld aan entiteiten van het type tool, maar dat komt later.

Filteren op dim1

Vraagstukken

  • OK - Wanneer wordt een bepaalde View herkend als zoekpagina? → Dat het van het type search_api_index_product_display moet zijn, oftewel van het type product display
  • Hoe krijg je toegang tot 'achterliggende' data van producttypes via een index op een display?

Zie ook

Bronnen

Block verschijnt niet

Casus mrt. 2016