Dengan search_api_solr, bagaimana saya bisa menerapkan peningkatan berbasis lapangan yang signifikan ketika menggunakan solr 6.x?

7

Saya menggunakan backend solr untuk search_api di situs drupal 8.

Saya telah menambahkan nilai bidang referensi istilah taksonomi ( field_promoted_search) ke indeks.

Jika suatu item konten memiliki field_promoted_searchnilai yang cocok dengan istilah pencarian, saya ingin mendapatkan peningkatan yang signifikan (mis. ^ 1000), mendorongnya ke bagian atas hasil pencarian.

Menambahkan nilai 'boost' tinggi di admin/config/search/search-api/index/content/fieldsberfungsi seperti yang diharapkan ketika server menggunakan solr <6, tetapi sejak pindah ke 6.1.0, ini tidak berfungsi seperti yang diharapkan. Ini mungkin karena search_api_solr / solarium menggunakan dorongan multiplikatif daripada aditif . Bagi saya ini tidak berguna karena ini mengalikan relevansi yang dicapai oleh bidang lain, daripada semata-mata mengistimewakan field_promoted_search, meskipun saya tidak yakin dengan aspek ini.

Saya telah mencoba menambahkan kueri dorongan untuk bidang pencarian yang dipromosikan ini ke kueri solarium menggunakan hook_search_api_solr_query_alter. Ini mengharuskan saya untuk melewatkan setiap kunci pencarian sebagai permintaan yang ditingkatkan, dan efeknya tampaknya dipengaruhi oleh urutan kunci (dan juga hasil saya tidak berakhir di bagian atas).

$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));

Ketika saya mencoba menggunakan fungsi boost saja, saya mendapatkan kesalahan dari Solr dan kueri tidak berjalan (saya telah mencoba beberapa fungsi).

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

Setiap saran sangat dihargai.


Referensi saya untuk metode boost additive vs multiplicative adalah artikel ini sangat membantu .

autopoietic
sumber

Jawaban:

-2

Tak satu pun dari fungsi API yang disediakan oleh API Pencarian dan Pencarian API Solr Drupal berfungsi dengan benar. Anda dapat memeriksa dokumen solarium atau beralih kembali ke Solr 5 atau Solr 4. Meningkatkan berfungsi dengan baik dengan Solr 5.x. Tipe data yang diindeks juga penting. Cobalah mengindeksnya sebagai bidang Teks Lengkap.

Gaurav Kapoor
sumber