Folosesc API de căutare cu baza de date pe un site Drupal 9.3.3.
Am indexat 26.000 de noduri de tip de conținut personalizat și acestea includ un câmp de dată personalizat: field_display_date
Indexul este configurat pentru a face html redat. Deoarece am nevoie ca utilizatorii să poată sorta pe field_display_date (descrescător), precum și pe relevanță, am expus două feluri: relevanță și dată (folosind acest câmp personalizat de dată) și am adăugat field_display_date la index în format „data”.
Scopul final este să puteți obține rezultate de căutare extrem de relevante, dar să le puteți sorta pentru a vedea cele mai recente rezultate extrem de relevante. Poate că există un mod complet diferit de a face asta.
Problemă: cu vizualizarea totul configurată, introduceți un termen de căutare și executați. Cu sortarea setată la „relevanța” implicită, returnările sunt destul de rapide. Dacă schimb sortarea la „data” (field_display_date: descendent) și trimit din nou, există un timp de așteptare foarte lung, adesea o expirare a gateway-ului.
Pe unul care nu a expirat, sql de vizualizare și redout de performanță a spus asta...
Interogare
Index: principal2
Taste: „test”
Chei analizate: matrice (
'#conjunction' => 'ȘI',
0 => 'test',
)
Câmpuri căutate: element_rendat, titlu
Sortare: field_display_date DESC
Opțiuni: matrice (
'search_api_view' => 'obiect (Drupal\views\ViewExecutable)',
'search_api_base_path' => 'search2',
)
Căutare titlu2
Calea /căutare2
Timp de construire a interogării 1,43 ms
Timp de execuție a interogării 2,81 ms
Vizualizare timp de randare 43237,89 ms
De ce este timpul de randare atât de mare și există idei despre cum să corectați acest lucru? De asemenea, este probabil ca trecerea la apache solr să funcționeze mai bine sau să aibă același rezultat? (Deoarece configurarea solr pare destul de complicată și îmi va lua destul de mult timp, aș dori să știu dacă este probabil să merite făcută.)
În schimb, iată aceeași vizualizare și aceeași indexare și cuvânt cheie de căutare sortate după relevanță...
Interogare
Index: principal2
Taste: „test”
Chei analizate: matrice (
'#conjunction' => 'ȘI',
0 => 'test',
)
Câmpuri căutate: element_rendat, titlu
Sortare: search_api_relevance DESC
Opțiuni: matrice (
'search_api_view' => 'obiect (Drupal\views\ViewExecutable)',
'search_api_base_path' => 'search2',
)
Căutare titlu2
Calea /căutare2
Timp de construire a interogării 1,23 ms
Timp de execuție a interogării 2,68 ms
Vizualizare timp de randare 2990,91 ms
Acest lucru pare să sugereze că căutarea în sine și obținerea rezultatului sunt ambele destul de rapide, dar din anumite motive încărcarea paginii este cu adevărat lentă?
Interesant, ocolirea completă a API-ului de căutare și doar plasarea câmpului corporal într-o vizualizare obișnuită și căutarea cuvântului cheie obține un rezultat mai rapid, ceea ce mă face să cred că fac ceva incorect la un nivel fundamental.
Filtru de vizualizări simple fără index, sortat după field_display_date descendent, căutând în câmpul de corp același cuvânt cheie...
Conținutul titlului
Calea /admin/content/node2
Timp de construire a interogării 3,23 ms
Timp de execuție a interogării 1,2 ms
Vizualizare timp de randare 6291,28 ms