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 .

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.