Încerc să adaug un impuls unei interogări de căutare a apei Solr atunci când un câmp are o anumită valoare, de ex. cand its nid = 123. Privind la Documente Solr versiunea 8.7 pentru amplificare (versiunea mea de server solr), asta pare destul de simplu. Trebuie doar să adaug un parametru bq ca:
bq=nid:123^10
Când merg la interfața de utilizare a serverului meu Solr și adaug o interogare acolo - mai întâi bifând caseta de selectare a analizorului edismax și apoi adăugând nid:123^10
în câmpul bq - văd rezultate în care nodul meu cu nid este în partea de sus a listei (cum m-aș aștepta) cu toate celelalte rezultate după el. Dacă elimin opțiunea, nodul meu cu nid 123 nu mai este în partea de sus (tot așa cum m-aș aștepta).
The search_api_solr modulul oferă un cârlig pentru a modifica interogările, hook_search_api_solr_query_alter(), unde îmi pot adăuga impulsul. (Notă secundară, am folosit acest cârlig în trecut pentru a crește rezultatele pe baza unei date, practic, așa cum este documentat în acest comentariu bkosborne.)
Înțeleg că ar trebui să pot implementa ceva de genul:
function MY_MODULE_search_api_solr_query_alter(\Solarium\Core\Query\QueryInterface $solarium_query, \Drupal\search_api\Query\QueryInterface $interogare) {
$solarium_query->addParam('bq', 'nid:123^10');
}
Totuși, acest lucru nu are nici un impact asupra scorurilor de relevanță ale rezultatelor mele (tipăresc scorul de relevanță din punctul meu de vedere și nodul meu cu nid 123 are același scor indiferent dacă adaug acest parametru sau nu), și nici, previzibil, ordinea rezultatele.
Ce îmi lipsește aici?
Informații despre versiune:
- Miez Drupal: 9.1.10
- API de căutare: 8.x-1.19
- Căutare API Solr: 4.1.12
- Server Solr: 8.7.0
p.s. cheia mea de câmp nid este de fapt its_nid
în index, dar tocmai am folosit nid
în această întrebare pentru lizibilitate.