Con search_api_solr, ¿cómo puedo aplicar un impulso significativo basado en el campo cuando uso solr 6.x?

7

Estoy usando el backend solr para search_api en un sitio drupal 8.

He agregado el valor de un campo de referencia de término de taxonomía ( field_promoted_search) al índice.

Si un elemento de contenido tiene un field_promoted_searchvalor que coincide con el término de búsqueda, me gustaría obtener un impulso significativo (por ejemplo, ^ 1000), empujándolo a la parte superior de los resultados de búsqueda.

Agregar un alto valor de 'impulso' admin/config/search/search-api/index/content/fieldsfuncionó como se esperaba cuando el servidor estaba usando solr <6, pero desde que se mudó a 6.1.0, esto no funciona como se esperaba. Esto puede deberse a que search_api_solr / solarium está utilizando un impulso multiplicativo en lugar de aditivo . Esto no me parece tan útil, ya que esto multiplica la relevancia lograda por otros campos, en lugar de ser un privilegio exclusivo field_promoted_search, aunque no estoy seguro de este aspecto.

He intentado agregar una consulta de impulso para este campo de búsqueda promocionado a la consulta de solarium usando hook_search_api_solr_query_alter. Esto requiere que pase cada clave de búsqueda como una consulta mejorada, y el efecto parece verse afectado por el orden de las claves (y también mi resultado no termina arriba).

$keys = $query->getKeys();
unset($keys['#conjunction']);
// Boost results where search term matches promoted search field.
$boost_keys = [];
$boost_value = 1000;
foreach ($keys as $key) {
  $boost_keys[] = '"' . $key . '"^' . $boost_value;
}
$solarium_query->getEDisMax()->setBoostQuery('ss_promoted_search:' . implode(' OR ', $boost_keys));

Cuando intento usar una función de impulso , recibo un error de Solr y la consulta no se ejecuta (he intentado varias funciones).

// Format is: "funcA(arg1,arg2)^1.2 funcB(arg3,arg4)^2.2"
$solarium_query->getEDisMax()->setBoostFunctions("ord(ss_promoted_search,1)^1000");

Cualquier consejo muy apreciado.


Mi referencia para los métodos de impulso aditivo versus multiplicativo es este artículo muy útil .

autopoiético
fuente

Respuestas:

-2

Ninguna de las funciones de API proporcionadas por Search API y Search API Solr Drupal funcionan correctamente. Puede consultar los documentos de solarium o volver a Solr 5 o Solr 4. Los aumentos funcionan correctamente con Solr 5.x. El tipo de datos indexados también es importante. Intente indexarlo como campo de texto completo.

Gaurav Kapoor
fuente