Faceted search (Drupal) - casussen
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?
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 (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
- https://www.drupal.org/node/1175756 - Facet blocks not displaying (Apache Solr) » Bug
- https://www.drupal.org/node/333676 - Facet Blocks Not Showing Up (Apache Solr) » Bug
- https://www.drupal.org/node/1402642 - Facet API blocks not showing on "non search" pages
- https://www.drupal.org/node/2170591 - Facet API blocks only working correctly with Search API index view's page display » Bug
- https://www.drupal.org/project/issues/facetapi?status=All&categories=All - Issues for Facet API » Bug
- https://drupalcommerce.org/questions/4489/search-api-and-facets - Search Api and facets » Tutorial
- http://www.webwash.net/drupal/tutorials/intro-search-api-part-2-faceted-search » Tutorial
- http://www.webwash.net/drupal/tutorials/how-create-search-pages-using-views-drupal-7 » Tutorial
Casus mrt. 2016
- https://www.drupal.org/node/2017007 - Display facets on non-search pages → Deze pagina wordt keer-op-keer als eerste getoond