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 .

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.