Dalam tiga bahagian pertama kami memasang dan mengkonfigurasi Solr dan Solarium dan mula membina aplikasi contoh untuk mencari filem. Kami juga melihat carian faceted.
We’re going to wrap up the series by looking at some more advanced features of SOLR, and how to use them with Solarium.
Takeaways Key
Alternatively, to add a background color:
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<strong>'); $hl->setSimplePostfix('</strong>');
Or you can even use per-field settings:
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<span style="background:yellow;">'); $hl->setSimplePostfix('</span>');
Sebaik sahaja anda telah mengkonfigurasi komponen penonjolan dalam pelaksanaan carian anda, terdapat sedikit lagi kerja yang terlibat dalam memaparkannya dalam paparan hasil carian anda.
$hl = $query->getHighlighting(); $hl->getField('title')->setSimplePrefix('<strong>')->setSimplePostfix('</strong>'); $hl->getField('synopsis')->setSimplePrefix('<span style="background:yellow;">')->setSimplePostfix('</span>');
Now, you can access all the highlighted fields by iterating through them, as properties of the highlighted document:
$highlightedDoc = $highlighting->getResult($document->id);
Or, you can use getField():
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<strong>'); $hl->setSimplePostfix('</strong>');
Medan yang diketengahkan tidak hanya mengembalikan teks, namun sebaliknya, mereka akan mengembalikan pelbagai "coretan" teks. Sekiranya tidak ada perlawanan untuk bidang tertentu - contohnya jika carian anda dipadankan pada tajuk tetapi bukan sinopsis - maka array itu akan kosong.
Kod di atas akan mengembalikan maksimum satu coretan. Untuk mengubah tingkah laku ini, anda boleh menggunakan kaedah setSnippets ():
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<span style="background:yellow;">'); $hl->setSimplePostfix('</span>');
Sebagai contoh, katakan anda mencari perkataan "bintang". Salah satu hasilnya mempunyai sinopsis yang berbunyi seperti berikut:
ini tidak boleh dilepaskan acara teater filem akan menampilkan salah satu momen yang paling mengasyikkan dalam sejarah TV dan klip eksklusif mengenai pembuatan yang terbaik dari kedua -dua dunia dan Star Trek: Musim Generasi Seterusnya 3. Ditetapkan pada abad ke -24, Generasi akan datang dicipta oleh Gene Roddenberry lebih 20 tahun selepas siri Star Trek yang asal. Generasi seterusnya menjadi siri terpanjang francais Star Trek, yang terdiri daripada 178 episod selama 7 musim. Star Trek: Generasi Seterusnya-yang terbaik dari kedua-dua dunia adalah peluang pertama untuk melihat yang terbaik dari kedua-dua dunia, salah satu episod TV terbesar sepanjang masa, sebagai ciri penuh panjang yang remastered di teater filem terpilih di seluruh negara.
Arahan Sinopsis Dokumen Siram akan mengandungi tiga item:
Satu cara untuk memaparkan pelbagai coretan adalah untuk meletupkannya, contohnya:
$hl = $query->getHighlighting(); $hl->getField('title')->setSimplePrefix('<strong>')->setSimplePostfix('</strong>'); $hl->getField('synopsis')->setSimplePrefix('<span style="background:yellow;">')->setSimplePostfix('</span>');
ini menghasilkan perkara berikut:
Klip sejarah dan eksklusif mengenai pembuatan yang terbaik dari kedua -dua dunia dan Star Trek: Generasi Seterusnya ... selepas siri Star Trek yang asal. Generasi seterusnya menjadi siri terpanjang bintang ... Trek Francais, yang terdiri daripada 178 episod selama 7 musim. Star Trek: Generasi Seterusnya - Yang Terbaik
Terdapat beberapa parameter lain yang boleh anda gunakan untuk mengubah suai tingkah laku komponen penonjolan, yang dijelaskan di sini.
Sekarang kita telah meliputi cara menggunakan penonjolan, mengintegrasikannya ke dalam aplikasi carian filem kami harus mudah.
Perkara pertama yang perlu dilakukan ialah mengubah suai aplikasi/pengawal/homecontroller.php dengan menambahkan yang berikut, sebelum kita menjalankan carian:
$highlightedDoc = $highlighting->getResult($document->id);
maka hasil carian - yang akan anda ingat ada dalam apl/paparan/home/index.blade.php - menjadi:
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<strong>'); $hl->setSimplePostfix('</strong>');
Perhatikan bagaimana setiap hasil carian pada dasarnya menggabungkan dan memadankan medan antara dokumen hasil carian, dan dokumen yang diserlahkan - yang terakhir adalah subset dari bekas. Bergantung pada skema anda, anda mungkin mempunyai semua bidang anda yang terdapat dalam versi yang diserlahkan.
Komponen Suggester digunakan untuk mencadangkan terma pertanyaan berdasarkan input pertanyaan yang tidak lengkap. Pada dasarnya ia mengkaji indeks pada medan tertentu dan mengekstrak istilah carian yang sepadan dengan corak tertentu. Anda kemudian boleh memesan cadangan tersebut dengan kekerapan untuk meningkatkan kaitan carian.
Untuk menubuhkan suggester, kami perlu mengkonfigurasinya dalam fail solrconfig.xml anda. Buka ia letakkan coretan XML berikut di suatu tempat berhampiran pengisytiharan
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<span style="background:yellow;">'); $hl->setSimplePostfix('</span>');
Anda akan melihat beberapa rujukan kepada "Spellcheck", tetapi ini semata -mata kerana komponen Suggester memusnahkan banyak fungsi secara dalaman.
Bit penting untuk diperhatikan ialah item
mulakan semula solr, dan kini anda boleh cuba menjalankan pertanyaan cadangan melalui penyemak imbas web anda:
$hl = $query->getHighlighting(); $hl->getField('title')->setSimplePrefix('<strong>')->setSimplePostfix('</strong>'); $hl->getField('synopsis')->setSimplePrefix('<span style="background:yellow;">')->setSimplePostfix('</span>');
(anda mungkin perlu mengubah nombor port, bergantung pada cara anda menyediakan solr)
output harus kelihatan sedikit seperti ini:
$highlightedDoc = $highlighting->getResult($document->id);
Seperti yang anda lihat, Solr telah mengembalikan empat perlawanan yang mungkin untuk "ho" - *ho ** use, ** ho ** menggunakan, ** ho ** rror dan ** ho ** saya. Walaupun *rumah dan seram sebelum rumah di abjad, rumah muncul pertama kerana menjadi salah satu istilah carian yang paling biasa dalam indeks kami .
mari kita gunakan komponen ini untuk membuat autocomplete untuk kotak carian kami, yang akan mencadangkan istilah carian biasa sebagai pengguna jenis pertanyaan mereka.
Pertama, tentukan laluan:
if($highlightedDoc){ foreach($highlightedDoc as $field => $highlight) { echo implode(' (...) ', $highlight) . '<br/>'; } }
termasuk jQuery ui (dan jQuery sendiri) dalam susun atur anda:
if($highlightedDoc){ $highlightedTitle = $highlightedDoc->getField('title'); }
Sertakan tema JQuery UI:
$hl = $query->getHighlighting(); $hl->setSnippets(5); // . . . as before . . .
Dan akhirnya, tambahkan beberapa Js untuk memulakan autocomplete:
implode(' ... ', $highlightedDoc->getField('synopsis'))
itu semua ada - cubalah dengan menjalankan beberapa carian.
Jika anda lebih suka, anda boleh menggunakan array untuk membuat pertanyaan anda - contohnya:
// Get highlighting component, and apply settings $hl = $query->getHighlighting(); $hl->setSnippets(5); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<span style="background:yellow;">'); $hl->setSimplePostfix('</span>'); // Execute the query and return the result $resultset = $this->client->select($query);
Pada permulaan, Solr melintasi direktori rumah yang ditentukan mencari teras, yang ia mengenal pasti apabila ia menempatkan fail yang dipanggil Core.Propeties. Setakat ini kami telah menggunakan teras yang dipanggil Collection1, dan anda akan melihat bahawa ia mengandungi tiga item utama:
fail core.propertes. Pada yang paling asas, ia hanya mengandungi nama contoh.
Direktori CONF mengandungi fail konfigurasi untuk contohnya. Sekurang -kurangnya, direktori ini mesti mengandungi skema.xml dan fail solrconfig.xml.
Direktori data memegang indeks. Lokasi direktori ini boleh ditindih, dan jika ia tidak wujud, ia akan dibuat untuk anda.
Jadi, untuk membuat contoh baru ikuti langkah -langkah ini:
name = instancename
... di mana Instancename adalah nama direktori baru anda.
Perhatikan bahawa konfigurasi skema.xml yang kapal dalam direktori contoh mengandungi rujukan kepada beberapa fail teks - contohnya stopwords.txt, protwords.txt dll - yang mungkin anda perlu menyalin juga.
kemudian mulakan semula Solr.
Anda juga boleh menambah teras baru melalui antara muka web pentadbiran di pelayar web anda - klik admin teras di sebelah kiri, kemudian tambah teras.
Terdapat beberapa fail konfigurasi tambahan yang patut disebutkan.
fail stopwords.txt-atau lebih khusus, fail khusus bahasa seperti lang/stopwords_en.txt-mengandungi kata-kata yang harus diabaikan oleh pengindeks carian, seperti "a", "" dan "at" . Dalam kebanyakan kes, anda mungkin tidak perlu mengubah suai fail ini.
Bergantung pada aplikasi anda, anda mungkin mendapati bahawa anda perlu menambah kata -kata ke protwords.txt. Fail ini mengandungi senarai perkataan yang dilindungi yang tidak "berpunca" - iaitu, dikurangkan kepada bentuk asas mereka; Sebagai contoh "ditanya" menjadi "bertanya", "bekerja" menjadi "kerja". Kadang -kadang memunculkan percubaan untuk "membetulkan" kata -kata, mungkin mengeluarkan apa yang difikirkannya adalah huruf yang salah nombor pada akhirnya. Anda mungkin berurusan dengan kawasan geografi dan mendapati bahawa "Maine" berpunca daripada "Maine".
anda boleh menentukan sinonim - kata -kata dengan makna yang sama - dalam sinonim.txt. Sinonim berasingan dengan koma secara per-line. Contohnya:
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<strong>'); $hl->setSimplePostfix('</strong>');
$hl = $query->getHighlighting(); $hl->setFields(array('title', 'synopsis')); $hl->setSimplePrefix('<span style="background:yellow;">'); $hl->setSimplePostfix('</span>');
Ringkasan
Untuk bacaan lanjut, anda mungkin ingin memuat turun Panduan Rujukan SOLR sebagai PDF, atau berunding dengan dokumentasi Solarium.
Melaksanakan autocomplete dengan solr dan solarium melibatkan penciptaan dalam fail konfigurasi solr anda. Suggester ini akan digunakan untuk memberikan cadangan untuk pertanyaan pengguna. Sebaik sahaja suggester ditubuhkan, anda boleh menggunakan pertanyaan Solarium untuk mendapatkan cadangan. Pertanyaan Suggester akan mengembalikan senarai cadangan berdasarkan input pengguna, yang kemudiannya boleh dipaparkan kepada pengguna. perisian yang berbeza. Solarium adalah perpustakaan PHP yang menyediakan API untuk berinteraksi dengan SOLR, platform carian yang kuat. Sebaliknya, Stellarium adalah planetarium sumber terbuka percuma untuk komputer anda. Ia menunjukkan langit yang realistik dalam 3D, seperti apa yang anda lihat dengan mata kasar, teropong atau teleskop. , anda perlu membuat contoh klien dengan konfigurasi pelayan SOLR anda. Kemudian, anda boleh membuat pertanyaan pilih menggunakan fungsi CreateSelect klien. Anda boleh menetapkan pelbagai parameter pada pertanyaan, seperti medan untuk kembali, rentetan pertanyaan, dan mana -mana penapis. Sebaik sahaja pertanyaan disediakan, anda boleh melaksanakannya dengan menggunakan fungsi pelaksanaan klien, yang akan mengembalikan set hasil yang anda boleh berulang untuk mengakses dokumen individu.
Bagaimana saya boleh memadam dokumen dari solr menggunakan solarium? Pertama perlu membuat contoh klien dengan konfigurasi pelayan SOLR anda. Kemudian, anda boleh membuat pertanyaan kemas kini menggunakan fungsi createUpdate klien. Anda boleh menambah arahan padam ke pertanyaan ini menggunakan fungsi adddeletebyid atau adddeleteByQuery. Sebaik sahaja semua arahan padam ditambah ke pertanyaan, anda boleh melaksanakannya menggunakan fungsi pelaksanaan klien.
Untuk mengoptimumkan indeks solr anda menggunakan solarium, anda perlu membuat contoh klien dengan konfigurasi pelayan Solr anda. Kemudian, anda boleh membuat pertanyaan kemas kini menggunakan fungsi createUpdate klien. Anda boleh menambah arahan mengoptimumkan ke pertanyaan ini menggunakan fungsi ADDOptimize. Sebaik sahaja arahan Optimal ditambahkan pada pertanyaan, anda boleh melaksanakannya menggunakan fungsi pelaksanaan klien.
Bagaimana saya boleh menggunakan aspek dengan solarium dan solr? Pertama perlu membuat pertanyaan pilih menggunakan fungsi CreateSelect klien. Kemudian, anda boleh menambah set aspek ke pertanyaan menggunakan fungsi addFacetet. Anda boleh menambah pelbagai jenis aspek ke set aspek, seperti aspek medan, aspek pertanyaan, dan aspek pelbagai. Sebaik sahaja aspek disediakan, anda boleh melaksanakan pertanyaan menggunakan fungsi pelaksanaan klien, yang akan mengembalikan set hasil yang termasuk hasil aspek. 🎜> Untuk menggunakan penonjolan dengan Solarium dan Solr, anda perlu membuat pertanyaan pilih menggunakan fungsi CreateSelect klien. Kemudian, anda boleh menambah penyerlah pada pertanyaan menggunakan fungsi lampu tambahan. Anda boleh menetapkan pelbagai parameter pada penyerlah, seperti bidang untuk menyerlahkan dan bilangan coretan untuk kembali. Sebaik sahaja penyerlah disediakan, anda boleh melaksanakan pertanyaan menggunakan fungsi pelaksanaan klien, yang akan mengembalikan set hasil yang termasuk hasil penonjolan. 🎜> Untuk menggunakan penomboran dengan solarium dan solr, anda perlu membuat pertanyaan pilih dengan menggunakan fungsi createSelect klien. Kemudian, anda boleh menetapkan parameter permulaan dan baris pada pertanyaan untuk menentukan julat hasil untuk kembali. Parameter Mula menentukan indeks hasil pertama untuk kembali, dan parameter baris menentukan bilangan keputusan untuk kembali. Sebaik sahaja penomboran disediakan, anda boleh melaksanakan pertanyaan menggunakan fungsi pelaksanaan klien, yang akan mengembalikan set hasil yang merangkumi pelbagai hasil yang ditentukan.
Atas ialah kandungan terperinci Menggunakan solarium dengan solr untuk carian - maju. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!