Penambahan nanti:
Mengapa Menggunakan Layanan Solr, Mengapa Menggunakan Luncence?
Pertanyaannya adalah: Ketika kami mengunjungi situs web belanja, kami dapat memasukkan kata kunci berdasarkan konten yang ingin kami minta konten yang relevan. Bagaimana kita bisa melakukan ini? Data acak ini tidak dapat ditanya berdasarkan bidang database. Bagaimana mereka bertanya? Mengapa semua jenis kata kunci aneh dapat ditanya?
Jawabannya adalah implementasi alat pencarian teks lengkap, dan luncensi menggunakan pencocokan elemen kata dan segmentasi kata. For example: Beijing Tiananmen Square------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- So we can search it when we search.
Ada segmenter kata yang merupakan Segmenter Kata Cina Ikanalyzer, yang memiliki pengiris berbutir halus dan pengiris yang cerdas, yaitu, menurut algoritma cerdas tertentu.
Ini adalah manfaat terbesar dari menggunakan Solr: implementasi fungsi pencarian.
Langkah untuk digunakan;
(1) Solr Server dibangun, karena SOLR dikembangkan menggunakan Java5, jadi JDK dan Tomcat diperlukan. Membangun dan menggunakan
(2) Setelah konstruksi selesai, kita perlu memperkenalkan bidang yang akan ditampilkan ke perpustakaan Solr. Konfigurasikan Spring dan Solr untuk memulai Solr saat proyek dimulai
(3) Impor konten kueri dalam database ke pustaka indeks Solr, yang diimplementasikan oleh klien Solrj. Untuk penggunaan khusus, silakan merujuk ke API
(4) Menetapkan layanan pencarian untuk panggilan klien. Hubungi Solr untuk menanyakan konten, ada implementasi fungsi paging. Implementasi sorotan SOLR.
(5) Klien menerima parameter permintaan halaman, memanggil layanan pencarian, dan melakukan pencarian.
Kriteria Penilaian Lapangan Bisnis:
1. Apakah pencarian di bidang ini diperlukan. Misalnya: Nama produk, titik penjualan produk, deskripsi produk
(Ini setara dengan memberikan label kepada Solr. Setelah mengimpor data produk, SOLR membagi konten spesifik dari produk yang sesuai di bidang ini, dan kemudian kami dapat mencari konten yang relevan)
2. Apakah bidang ini diperlukan untuk bisnis berikutnya. Misalnya: ID Produk.
Bidang yang Diperlukan:
1. ID Produk
2. Judul Produk
3. Poin Jual
4. Harga
5. Gambar Produk
6. Nama Kategori Produk
7. Deskripsi Produk
Bidang Bisnis di Solr:
1. ID-》 ID Produk
Bidang yang sesuai lainnya membuat bidang Solr.
<field name="item_title" type="text_ik" indexed="true" stored="true"/><field name="item_sell_point" type="text_ik" indexed="true" stored="true"/><field name="item_price" type="long" indexed="true" stored="true" stored="true"/><field name="item_image" type="string" indexed="false" stored="true" /><field name="item_category_name" type="string" indexed="true" stored="true" /><field name="item_desc" type="text_ik" indexed="true" stored="false" /> <field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/><copyField source="item_title" dest="item_keywords"/><copyField source="item_sell_point" dest="item_keywords"/><copyField source="item_category_name" dest="item_keywords"/><copyField source="item_desc" dest="item_keywords"/><copyField source="item_desc" dest = "item_keywords"/> <copyfield source = "item_desc" dest = "item_keywords"/>
Restart Tomcat
Solr adalah proyek open source teratas di bawah Apache, dikembangkan di Java, dan merupakan server pencarian teks lengkap berdasarkan Lucene. Solr menyediakan bahasa kueri yang lebih kaya daripada Lucene, dan pada saat yang sama dapat dikonfigurasi dan dapat diperluas, dan mengoptimalkan kinerja indeks dan pencarian.
Solr adalah server pencarian teks lengkap, dan dapat mewujudkan layanan pencarian teks lengkap hanya dengan mengonfigurasinya. Secara efektif mengurangi tekanan pada database karena akses yang sering ke database.
Langkah 1: Menyebarkan Solr pada sistem Linux.
Langkah 2: Solrj adalah klien Solr, dan menggunakannya memerlukan mengandalkan paket JAR Solrj.
Langkah 3: Tambahkan konten database ke pustaka indeks Solr, sehingga kueri akan diminta di pustaka indeks, bukan database.
Lapisan Pengontrol:
@Controller @requestMapping ("/manager") kelas publik itemController {@Autowired private itemservice itemService; @RequestMapping ("/ImportAll") @ResponseBody Public taotaoresult importAllItem () {taotaoresult hasil = itemservice.importAllItem (); hasil pengembalian; }} <br> Layanan Layanan Menulis: <br> Produk kueri multi-meja, penulisan logika yang ditampilkan di halaman: <br> mapper.java paket com.taotao.search.mapper; impor java.util.list; impor com.taotao.search.pojo.item; antarmuka publik itemMapper {List <TIMET> getIteMlist (); }mappper.xml
<? Xml Version = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> namespace = "com.taotao.search.mapper.itemmapper"> <pilih id = "getItemlist" resultType = "com.taotao.search.pojo.item"> pilih a.id, A.title, a.sell_point, a.price, a.image, b. Nama Category_name dari tb_item A Left gabungan tb_item_cat b pada a.cid = b.id </select> </mapper>
Langkah 4: Tulis logika kueri dari perpustakaan indeks:
// Dapatkan informasi produk dari perpustakaan indeks. Sekarang lapisan DAO ini adalah untuk mendapatkan informasi dari perpustakaan indeks, karena logika penulisan sebelumnya adalah mengimpor data di DB ke dalam pustaka indeks. Kueri selanjutnya semuanya dilakukan dari perpustakaan indeks, bukan dari database @repositorypublic kelas pencarian dan implementasi pencarian {@autowired solrserver solrserver solrserver; @Override Public SearchResult Search (SolRQuery Query) melempar Exception {// Ini untuk secara langsung menjalankan kueri dari Indeks Perpustakaan QueryResponse Response = solrserver.Query (kueri); // Dapatkan hasil dari kueri solrdocumentlist DocumentList = response.getResults (); SearchResult hasil = new earlerResult (); // Ini untuk mendapatkan jumlah total hasil catatan. Daftar <TEMET> itemList = ArrayList baru <> (); // Sorotan produk adalah bahwa ketika mouse bergerak ke kata, font berubah warna. Ini adalah peta <string, peta <string, daftar <string>>> sorot = response.getHighlighting (); untuk (solrdocument solrdocument: documentlist) {// Setiap solrdocument adalah konten dari produk pojo, jadi di sini kita perlu membuat objek pojo untuk produk untuk mendapatkan item bidang terperinci item = item baru (); item.setId ((string) solrdocument.get ("id")); // Sorot adalah daftar judul <string> list = sorote.get (solrdocument.get ("id")). Get ("item_title"); Rangkaian; if (list! = null && list.size ()> 0) {title = list.get (0); } else {title = (string) solrdocument.get ("item_title"); } item.settitle (judul); item.setPrice ((long) solrdocument.get ("item_price")); item.setImage ((string) solrdocument.get ("item_image")); item.setCategory_name ((string) solrdocument.get ("item_category_name")); item.setsell_point ((string) solrdocument.get ("item_sell_point")); itemlist.add (item); } result.setIteMlist (itemList); hasil pengembalian; }}Langkah 5: Setelah konten perpustakaan indeks dibuat, mulailah menulis antarmuka layanan eksternal, yaitu mencari produk tertentu melalui kondisi, seperti ponsel, akan menampilkan informasi daftar ponsel total, halaman mana, berapa banyak halaman, dan berapa banyak hasil pencarian yang akan terjadi
URL yang diminta:
/Cari/Query? q = {Kondisi kueri} & page = {page} & rows = {baris}
Hasil yang Dikembalikan: Daftar Produk Kemasan Taotaoresult.
Buat pojo yang sesuai dengan pernyataan SQL, dan buat pojo secara terpisah
Daftar konten yang digunakan untuk menginstal:
Item kelas publik {private string ID; judul string pribadi; string pribadi sell_point; harga panjang pribadi; gambar string pribadi; Private String Category_Name; Private String item_des; }Lapisan Pengontrol:
@ControllerPublic Class SearchController {@Autowired Private SearchService SearchService; @RequestMapping (value = "/query", Method = requestMethod.get) @ResponseBody Pencarian Taotaoresult Publik (@RequestParam ("Q") QueryString, @RequestParam (DefaultValue = "1") Halaman Integer, queryparam (defaultValue = "60" 60 "), query {query {query {defaultValue =" 60 " (Stringutils.isblank (queryString)) {return taotaoresult.build (400, "kondisi kueri tidak bisa kosong"); } SearchResult SearchResult = null; coba {queryString = string baru (queryString.getbytes ("iso8859-1"), "utf-8"); SearchResult = SearchService.Search (QueryString, halaman, baris); } catch (Exception e) {E.PrintStackTrace (); return taotaoresult.build (500, Exceptionutil.getstacktrace (e)); } return taotaoresult.ok (SearchResult); }} <br> <br> <br> 1 <span style = "font-size: 16px"> Layanan Layanan: Gunakan Solrqurery Solrj untuk permintaan: </span>Prasyaratnya adalah menulis cara membaca data dari perpustakaan indeks:
Berikut ini adalah lapisan antarmuka layanan:
Pengontrol:
@ControllerPublic Class SearchController {@Autowired Private SearchService SearchService; @RequestMapping (value = "/query", Method = requestMethod.get) @ResponseBody Pencarian Taotaoresult Publik (@RequestParam ("Q") QueryString, @RequestParam (DefaultValue = "1") Halaman Integer, queryparam (defaultValue = "60" 60 "), query {query {query {defaultValue =" 60 " (Stringutils.isblank (queryString)) {return taotaoresult.build (400, "kondisi kueri tidak bisa kosong"); } SearchResult SearchResult = null; coba {queryString = string baru (queryString.getbytes ("iso8859-1"), "utf-8"); SearchResult = SearchService.Search (QueryString, halaman, baris); } catch (Exception e) {E.PrintStackTrace (); return taotaoresult.build (500, Exceptionutil.getstacktrace (e)); } return taotaoresult.ok (SearchResult); }} @ServicePublic Class SearchServiceImpl mengimplementasikan pencarian UNDER {@Autowired Private Searchdao Searchdao; @Override Public SearchResult Search (String QueryString, Int Page, Int Rows) melempar Exception {solrQuery kueri = new solrQuery (); query.setQuery (queryString); query.setStart ((halaman-1)*baris); query.setrows (baris); // Atur bidang pencarian kueri default, yaitu, kueri kueri default.set ("df", "item_keywords"); // atur sorot query.setHighlight (true); query.addhighlightfield ("item_title"); query.setHighlightSimplePre ("<em style =/" color: red/">"); query.setHighlightSimplePost ("</em>"); // jalankan kueri SearchResult SearchResult = Searchdao.search (kueri); // Hitung berapa banyak halaman produk yang panjang berdasarkan Hasil RecordCount = SearchResult.GetRecordCount (); long pageCount = RecordCount/ROWS; if (recordcount % baris> 0) {pagecount ++; } SearchResult.SetPageCount (pagecount); searchResult.setCurpage ((panjang) halaman); Kembalikan SearchResult; }}Klien mengimplementasikan fungsi pencarian dengan memasukkan produk:
Lapisan Pengontrol:
@Controller
pencarian kelas publik {@autowired private SearchService SearchService; @RequestMapping ("/Search") Pencarian String Publik (@RequestParam ("Q") String QueryString, @RequestParam (defaultValue = "1") halaman integer, model model) {if (queryString! = Null) {coba {queryString = new string (querystring.getbyted; } catch (UnsupportedEncodingException e) {e.printstacktrace (); }} SearchResult SearchResult = SearchService.Search (QueryString, halaman); // lulus parameter model.addattribute ("kueri", querystring); //Model.addattribute("TotalPages ", searchResult.getPageCount ()); model.addattribute ("ItemList", SearchResult.GetIteMlist ()); model.addattribute ("halaman", halaman); mengembalikan "Cari"; }}Lapisan Layanan:
@ServicePublic Class SearchSerViceImpl mengimplementasikan pencarian UNDERFICE {@Value ("$ {search_base_url}") Private String search_base_url; @Override Public SearchResult Search (String QueryString, Int Page) {// Yang dibutuhkan di sini adalah parameter koneksi +. Jumlah catatan yang ditampilkan pada setiap halaman dapat diteruskan atau tidak // hubungi layanan taotao-search // peta parameter kueri <string, string> param = new HashMap <> (); param.put ("q", querystring); param.put ("halaman", halaman + ""); coba {// Memanggil string servis json = httpclientutil.doget (search_base_url, param); // Konversi string ke objek java taotaoresult taotaoresult = taotaoresult.formattopojo (json, searchresult.class); SearchResult hasil = (searchResult) taotaoresult.getData (); hasil pengembalian; /* if (taotaoresult.getStatus () == 200) {}*/} catch (exception e) {e.printstacktrace (); kembali nol; }}}Artikel di atas menggunakan Solr untuk mewujudkan fungsi pencarian produk (Contoh Penjelasan) adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.