Erkaklar PHP SF-ni qidirishadi. MySQL-da xavfsiz va qulay qidiruv
Sizda brauzeringizda JavaScript bloklangan. JavaScript-ga saytni ishlashiga ruxsat bering!
PHP + Sayt xaritasi bo'yicha rus tilining morfologiyasini hisobga olgan sayt bo'yicha qidirish
Vaqt bilan saytingizni yaratish orqali siz uni universal universal qidirish zarurligi haqida o'ylaysiz. Oddiy echim bor: qidiruv tizimlaridan yaxshiroq qidirish, masalan: Yandex-dan qidirish yoki Google-dan qidirish. Bunday yechimning umumiy yo'qligi - faqat qidiruv tizimiga kirgan sahifalar qidiruv indeksiga qidirish tizimiga kirishni so'raydi. Boshqacha qilib aytganda, saytingizning bir qismi "saralash" bo'lmaydi.
Qayg'uli, boshqa echim qidirmoqda. Ha, bu: Yaneks.server - bu rus tilining morfologiyasini hisobga olgan holda saytingizni qidirish uchun mahsulotni qidirish uchun mahsulot. Yuklash. Yandex Yandex-da. Server demon sifatida ishlaydi va Windows platformasi - xizmat sifatida. Ular. U faqat ildiz otish paytida ishlashi mumkin - serverga kirish. Virtual xostingda saytni ishlayotganda mos emas. :-( Ikkinchi kamchilikni sozlash. Faqat bitta tugma "yugurish / to'xtash".
Biz Internetni "qazishni" boshlaymiz. Qanaqasiga? Hamma sizning veb-saytingizda qidiruvga ega. Qandaydir tarzda, odamlar buni qilishadi. Masalan, men bilan uzoq vaqtdan beri tasvirlangan, so'zlarning may oyida aniqlanmagan va sahifalardagi so'zlarni indeksi ko'rsatmaydigan saytdagi aniq qaror. Ammo vazifaga yanada chuqurroqroq, vazifa to'liq ngardiylik bilan bog'liqligini ko'proq tushunasiz.
Birinchidan, siz butun saytni skanerlashingiz va undan barcha so'zlarni tanlashingiz kerak. Xo'sh, men buni qanday bilganman - Sayt xaritasi generatori uzoq vaqtdan beri ushbu vazifani muvaffaqiyatli hal qilishda muvaffaqiyat qozongan.
Ikkinchidan, siz barcha so'zlarning asl shaklini olishingiz kerak. Bu erda bir nechta variantlar mavjud, masalan, foydalanishingiz mumkin oqimlibu so'zlarning oldidan va oxirida prefiks, effiksiyani tugatadi. Yoki lug'atlar yordamida yanada murakkab tizim.
Uchinchidan, ma'lumotlar bazasiga yuklab olinishi va minimal vaqtni qidirish indeksi mavjud.
Ikki haftalik vaqtni sarflab, ko'p miqdordagi turli xil imkoniyatlar va algoritmlarni sinab ko'rdim: 1. Skanerlash uchun men oddiy ifoda yordamida oddiy ifoda etish, barcha HREDdan sahifani kesib tashlaydi:
// $ html \u003d fayl_get_kontents ($ url) dan noyob havolalar oling; Agar (prag_mach (»|
Endi siz tashqi havoladan ichki va rekorsdan ajratishingiz kerak va kontursiya ichki havola manzili bilan murojaat qiling. Bu erda u "rake" ... Ichki havolalar Http: // domen / manzili bilan ro'yxatdan o'tish mumkin, ular hozirgi sahifaga nisbatan bo'lishi mumkin, ular bazaga nisbatan nisbatan bo'lishi mumkin. Keyin, ushbu sahifaning indeksatsiya qilinishi robots.txt-da taqiqlanganligini tekshirish kerak va ushbu sahifani skanerdan o'tkazmaganmi yoki yo'qligini tekshirish kerak. Siz robotlardan foydalanishingiz mumkin. SQL tomonidan qidirish misoli va qidirish misoli
biz barcha so'zlarni olib tashlaymiz, biz barcha so'zlarni bitta reestrga o'zgartiramiz va so'zning asosini (ildizi) ajratib turamiz. So'zning tubini ta'kidlash uchun PHP-Sinfdan foydalanishni rejalashtirish yaxshidir, bu sizga rus, ingliz, ukrain, eston morfologiyasi yoki nemis tilini hisobga olgan holda so'zlarning ildizlarini ajratib turish imkonini beradi. Har bir til uchun lug'atlar 10-15 MB ni egallaydi. Serverda qo'shimcha dasturiy ta'minotni o'rnatishning hojati yo'q, hamma narsa eng keng tarqalgan xostingda ishlaydi. Kamchilik ildizning yoritilishi past. Kutubxona quyidagicha bog'liq:
FPMorfhy Ob'ektida uchta parametr mavjud: Birinchisi, lug'atlar papkasining yo'lidir; Ikkinchisi - "RU_RU" - UTF-8, "RUS" - 1251 y. Uchinchisi - variantlar.
Variantlar muhim saqlash parametridan foydalanib, uchta qiymatdan birini olishi mumkin:
PhpMorfhy_storage_file (lug'atlarni butun xotiraga yuklamang, bu server resurslari bilan ishlash bo'yicha eng sekin variant, ammo server resurslari bilan ishlash bo'yicha eng tejamkor),
PhpMorfhy_storage_shm ("Dictionary - Maxsus lug'at faylini yuklab oling, php Shmop kengaytmasi talab qilinadi) yoki
PhpMorfhy_storage_Mem (shuningdek, agar Shmop ishlatilmasa, faylni butun xotiraga yuklab oling, operatsiya tezligi avvalgidan farq qilmaydi).
Virtual hostingda, ehtimol siz birinchi variantdan va ko'proq tezlikda serverda foydalanishingiz kerak, bu xotiradan foydalanib, imkoniyatlardan foydalanish yaxshiroqdir. Agar modulga tez-tez murojaat qilish rejalashtirilgan bo'lsa, sizning vazifalaringiz uchun variantni tanlang, bu umumiy xotira bilan foydalanish yaxshidir.
FPMorphy kutubxonasiga misol.
3. Endi biz barcha skanerlash va tahlil qilish natijalarini saqlaydigan ma'lumotlar bazasi jadvallarini yaratishingiz kerak:
// sayt sahifalarining havolalari, bosh sahifalar va e'lonlar ro'yxati // (Izlash natijalarini ishlab chiqarish uchun birinchi 300 sahifadagi belgilar ro'yxati). Agar post bo'lmasa, jadval yarating (ID) Agar bekor qilinmasa, "URL" (255) NULD SIZNI SAQLANMAYDI (128) Standart "") // saytning barcha so'zlari. // Word - Stemakerdan keyin qolgan narsa ("ildiz" deb ataganmiz // ovoz - bu so'z uchun ovoz balandligi natijasi. Agar biron bir so'z bo'lmasa, jadval yarating (Auto_incrite Auto_increment, Word '' ACOYUD '' 'ADOL) indeks_word induc_word-ni yarating. $ So`r -\u003e Kalom . (Word (8)) indeks_word_undound index. "$ Qidiruv -\u003e so'z." (Sound (4)) // Har bir satr "sahifa" sahifasida "KNT" sahifasida uchrashib, "KNT" sahifasida "Kalom" so'zi - bu indeks mavjud emas ('sahifa) NULL, "IN INFEFAGNED NOLD" yozuvi NULL, `CNT 'CNT' NOLD, NULL, NUCOR (sahifa, so'z))
Endi siz qidiruv so'zi so'rovi shaklini yaratishingiz kerak. Qidiruv so'rovining eng oddiy shakli quyidagicha ko'rinadi:
uning kodi quyidagicha:
Saytni qidirish skriptini yuklab oling
Ushbu misolni yaratish uchun menda juda ko'p vaqt bor, shuning uchun uni pulga aylantirmoqchiman. Agar siz mening featni takrorlamoqchi bo'lsangiz - omad. Agar vaqtingizni qadrlasangiz, men pul evaziga vaqt almashtirishdan mamnunman. Hammasi bo'lib 2900 rubl (~ 46 $) Siz Sayt xaritasi generatori bilan to'liq ochilgan qidiruv skriptini olasiz.
Arxiv tarkibi:
fPMorphy / - so'zlarning ildizini olib tashlash uchun kutubxona
stemmer / - Tez algoritm so'zining asosini ta'kidlash
konfig.php - Sozlamalar Ma'lumotlar bazasi va siz foydalanadigan umumiy funktsiyalar bilan ishlash va ularni o'zingiz bilan almashtirish uchun
index.php - Qidiruv shakli + Qidiruv natijalari
o'rnatish.php - qidirish uchun MySQL ma'lumotlar bazasi jadvallarini yaratish
link_bar.php - sahifa navigatsiyasi
qidirish bilan ishlash uchun qidirish.php - sinf. Tarkibida usullar mavjud:
sound_ex ($ string) - so'z tovushini olish uchun rus ovozi
yangilanish ($ url, $ skanent \u003d 0) - sayt sahifalarining barcha sahifalarini kuzatish, tana, tavsifni ajratib ko'rsatish.
Parsingword ($ url, $ so'zlari) - Word-ni tahlil qilish va qidirish bazasiga qo'shing
Concwords ($ so'zlari) - Transmed massivida barcha so'zlarni ildizlariga almashtiradi
uRL_ShORS ($ url, $ baza \u003d »,, $ epp \u003d 0) - havolani, tashqi a'zolarni ajratish havolasini joylashtiring
Readurl ($ sayt) - Kurl, ishlov berish, qayta ishlash, qayta yo'naltirish
sayt xaritasi - Sayt xaritasi qurilishi
spider_http.php - o'qish va palakaga asoslangan sayt skaneri
spider_siteap.php - Sayt xaritasi asosida sayt skaneri
O'rnatish bo'yicha ko'rsatmalar:
Qidiruv.ZIP arxivini qidirish papkasiga oching. Bunga skriptlardan o'rnatishga ruxsat berish 777.
Ma'lumotlar bazasini config.php faylida tahrirlash, kerakli ma'lumotlar bazalari yaratiladi. Ma'lumotlar bazalari yaratiladi.
Yugurish "/Search/ vspider_http.php" Skaner bazaviy jadvallarni to'ldiradi: Saytning barcha sahifalar jadvali, sarlavha, kalit so'zlar va tavsifda. So'zlar jadvali, uning sahifalarida topilgan so'zlarning ildizlari Ushbu foydalanish uchun mavjud sayt xaritasi asosida bazani shakllantirish mumkin, chunki bu foydalanish uchun "/Search/Sider_sitemap.php"
"Upirater.php" ni o'z ichiga boshlang; Yangilash ($ url); Har bir sahifani qo'shishda, o'zgartirish yoki o'chirishda $ Url - siz yangilashni xohlagan sahifadir. Sahifani saqlash o'zgargandan keyin qulay qo'ng'iroq qiling Agar sahifa 404 xato bo'lsa yoki u bo'sh bo'lsa, u ma'lumotlar bazasidan o'chiriladi.
sayt xaritasi Map Sayt xariteap.xml-ni yaratish uchun "/search/Siteapeap.php" Robots.txt-dagi sayt xaritasiga yo'lni ro'yxatdan o'tkazishni unutmang. Sayt xaritasi: /Sarch/Siteapeap.xml
Saytni qidirish skripti
Robots.txt-da taqiqni hisobga olgan holda saytning barcha sahifalarini skanerlash
So'zni tanlash, hisoblash so'zlari bilan sahifalar matnini sotish
Rus tili va kutubxonalarining morfologiyasini hisobga olgan so'zlarning ildizlarini ta'kidlash
Tez algoritm tomonidan so'zlarning asoslarini taqsimlash (tavsiya etilmaydi, skript matnida bombardimon qilingan)
Lug'atdagi so'zning yo'qligiga qarab skanerlash paytida rus tilini tekshirish
To'rtta xabar rejimi: 0-sumark, 1-Saytdagi xatolar va minimal ma'lumotni berishda, 2-chi ma'lumotnomada, 3-batafsil ma'lumotni berish
Eshitish so'zlarini qidiring. Rus sadosix.
Izlash natijalarini dolzarblik bilan tartiblang. Birinchidan, maksimal miqdorda barcha qidirish so'zlari mavjud bo'lgan sahifalarda ko'rsatilgan.
Topilgan natijalarni ishlab chiqing
Skript rus tilida rus tilida batafsil
Skript kodi PHP + MySQL-da amalga oshiriladi, to'liq ochilib, qo'shimcha kutubxonalardan foydalanmaydi. Sizga kerak bo'lgan hamma narsa to'plamda keladi.
Sayohat generatoringiz skaner tomonidan yaratilgan taglik asosida
Skript:
hisobga olinmagan , REL \u003d Nofolt
barcha sahifalarda mavjud bo'lgan umumiy matnlarni qidirishdan olib tashlanmang.
Foydalanish to'g'risidagi bitim:
Siz qabul qilingan koddan biron bir o'zgarishlar bilan foydalanishingiz mumkin, siz manbaga havolani belgilashingiz shart emas.
Siz uni qayta tiklash huquqi, erkin yoki cheklangan kirish joyida, shuningdek har qanday shaklda nashr etish huquqiga ega emassiz.
Boshqa barcha huquqlar muallif tomonidan saqlanadi.
Muallifga savollar, sharhlar, tilaklar bilan murojaat qilishingiz mumkin. Kontaktlar.
Diqqatli bo'ling! 2900 rubl (~ 46 $) uchun siz bir-biridan sezilarli darajada farq qiladigan ikkita yozuv variantlaridan birini tanlashingiz mumkin. UTF-8 kodlashdagi sayt uchun qidirish skripti UTF-8 kodlashi (UTInik / Unicode) uchun muntazam ravishda amalga oshiriladigan sahifalarni ajratib turadi. -8. Windows-1251 kodlash saytida sayt uchun skript faqat bitta tog 'kododlash str *, definmed-kodlar bilan ishlaydigan strelka, bir nechta yo'lli kodlar uchun mo'ljallangan.
Siz kirishingiz yoki ro'yxatdan o'tishingiz mumkin! Yoki ro'yxatdan o'tmasdan Yuklab olish tugmachasini bosganingizda, ushbu sahifada ko'rsatilgan skriptni ishlatish shartlari bilan qabulni tasdiqlaysiz. Sizning balansingizdan 2900 rubl (~ 46 $) miqdorida mablag 'beriladi va fayl yuklangan.
Qidiruvni amalga oshirish uchun qisqacha ma'lumotnoma: Satrlarni qayta ishlash, xizmat ko'rsatadigan belgilar, ma'lumotlar bazasi, mantiq, yo'lak, ziddiyat, dolzarblik.
1 qism: general Vedomosti
Satrni qayta ishlash
Avvalo, siz ipni tutqichlar bilan kesishingiz kerak.
$ Search \u003d Subtrr ($ qidirish, 0, 64);
Foydalanuvchiga 64 ta belgi qidirish uchun etarli bo'ladi. Endi men "g'ayritabiiy" ramzlarini qichqiraman.
Nazariyada foydalanuvchiga juda qisqa so'zlarni qidirish imkoniyatini berish mumkin emas - boshqa narsalar qatorida u serverni kuchli yuklaydi. Shunday qilib, ikkita harfdan uzunroq bo'lgan so'zlarga ko'ra, faqat ikkita harfdan uzunroq bo'lgan so'zlarga ko'ra qarashga ruxsat berish (agar cheklov ko'proq bo'lsa, "(1, belgilar soni)" (1, belgilar soni) "ni almashtirish kerak.
Va yomon so'zlarni almashtirgandan so'ng - ikki bo'sh joyni siqish kerak (ular qisqa so'zlarni to'g'ri qidirish uchun qilingan).
$ yaxshi \u003d Eerge_eplace ("+", ", $ yaxshi);
Aytaylik, biz foydalanuvchini qidirish mantiqni tanlash imkoniyatini berishni istaymiz - barcha so'zlarni yoki faqat bittasini qidiring. Agar siz Yandex-dagi kabi bajarmoqchi bo'lsangiz - ikkita amperni "va" (Word1 && Word2 && Word3) yoki qandaydir tarzda, keyin men maslahatchi emasman. Kichik Imhone veb-saytidagi qatorlar bo'lgan shamanizm sarflanmagan vaqtni oqlamaydi. Shuning uchun men qidiruv formasini chizaman:
Va qidiruv skriptida foydalanuvchi joriy qilinganligini yana bir marta tekshiring:
Muayyan so'zlar bo'yicha statistika uchun siz quyidagilarni amalga oshirishingiz mumkin:
$ Wicor \u003d portlash ("", $ qidirish); Whe (list ($ k, $ v) \u003d har bir ($ (v)\u003e 2) ($ V)\u003e 2) $ status \u003d "$ V" (MySQL_Quveri) (MySQLL_Quveri) % $ V% '')); yana $ stat \u003d "$ V: qisqa";); $ writ_stats \u003d" So'z statistikasi: ". Joylashtiring (" ", $ stat)." "; Yo'qolgan ($ str);
Poezdni ishlab chiqarish natijalari
Xo'sh, qidirish natijalari va qidiruv natijalari sonining sonini, avtoulovni qidirishni amalga oshiring - bir juftlik bir juftlik. O'zgaruvchan $ sahifasini ($ 0 emas, balki kamida 0 dan kam bo'lmasligi kerak). Chiziqlar sonini hisobga olgan holda, biz sizga kerakli maydonlarni yozamiz. Va keyin qo'shing
(Sintaksisi: chegarasi<кол-во строк> Ikkala cheklovi.<кол-во строк отступа>, <кол-во строк>)
Bunday so'rovning bajarilishi natijasida biz sahifada namoyish qilishni xohlagan qatorlarni olamiz. Siz navigatsiya panelini yoqish uchun keyingi va oldingi sahifaga havolalarni jalb qilishingiz mumkin bir nechta sahifalar.
Agar ($ sahifa\u003e 0) Chop etish (" oldingi sahifa"); agar ($ sahifa) bo'lsa<$results_amount/$rows_in_page)
print ("keyingi sahifa");
Yoritgich
Matndagi so'zlarni engil yoki qalin shrift bilan ajratish uchun faqat quyidagilarni bajarishingiz kerak:
$ Guc_Replace ("", "|", $ Yaxshi);
Bo'shliqlar (va ular bizning so'zlarimizda bitta so'z bor, boshqa hech qanday joyda hech narsa qondirmaydi, bundan tashqari, biz ularni oxirigacha kesib tashlamaymiz), oddiy iboralardagi variantlarni almashtirish uchun etarli. "Yomon" so'zlari biz ta'kidlamaymiz, chunki ma'lumotlar bazasida ular qidirmayapti :). Biz yozadigan matnni ko'rsatadigan kodda:
Muammoni yozgandan so'ng, men shoshildim, yozib, yozdim va "Backlig". Bu erda emas edi! Mening matnimdagi HTML teglari bor, shuning uchun men juda ko'p o'ylashim kerak edi ... Bu narsa shuni aniqladi (ta'kidlash uchun so'zlar bilan satr):
$ matn \u003d Eergi_Replace ("\u003e ([^<]*)($words)", ">\\1\\2", $ Matn";
Siz tomosha qilishingiz kerak, yorliqda hech qanday so'z yo'q. Biroq, bunday almashtirishning resurslari intensivligi (mening K6-266 oyidagi 5 soniya ichida, etti soniya). Qayg'uli.
Bunday usullarni qo'llash, birinchi navbatda, foydalanuvchi harakatining erkinligini cheklash va uni a) berish uchun a) Sinovdan tashqari yukni o'rganish uchun (masalan, matnning megabaytini yuborish) uchta harfdagi so'zlar (ibora noaniq bo'lib chiqadi, ammo yozmadim :) shunga qaramay :) shunga qaramay :) Shunday qilib, skript ma'lumotlar bazasiga 250 marta ko'tarilishi uchun maxsus so'rovlar chizig'iga zarba berish natijasida xato xabarini ko'ring . Ikkinchidan, foydalanuvchi uchun ba'zi qulayliklar traktor va yoritgich hisoblanadi.
Men bunday iborani "xavfsiz va qulay qidiruv" ni eslayman
2-qism. Qisqa vaqt haqida qisqacha
Oleg YUSOV
Kelishuv uchun qidiruv natijalarini ko'rsatish uchun quyidagilar zarur:
Kerakli var o'lchamlari yoki matn maydonlarining har qandaylari (kichik matn, o'rta/tisextext va boshqalar) To'liq matn matnli kalitlarini yarating:
Tekshirish stoli jadvalini qo'shish To'liq matn qo'shish (maydon)
Keyingi - hatto osonroq:
$ So'rov \u003d "Select (" $ qidiruv materiallari "ga qarshi (" $ qidiruv materiallari "ni Relev Desc tomonidan jadval tartibidan Relev sifatida" Seleev "ni tanlang."
Izohlar:
Odatiy bo'lib, kamida 4 ta belgidan iborat so'zlarni qidirish. FT_STATIK.C manbaida #defin Min_Word_len 4-ni o'rnatish kerak, garchi mening fikrimcha, uni tahrirlash kerak emas.
Qidiruv shaklidagi% belgilar mavjud emas, qidiruv maydonidagi so'zlar qismlar ro'yxatidan foydalanib qadoqlangan.
FT_STISTATIC manbaida so'z ayirboshchilarining ro'yxati boshqariladi.
Kamida o'nlab yozuvlar, dolzarblikni hisoblashni boshlash uchun stolda kerak.
Relev maydonini qaerda bo'lsa, undan foydalanish mumkin emas:
Relev\u003e 0 buyurtma bo'yicha Relev\u003e 0 buyurtma bo'yicha Selev ("$ qidiruv materiallari" ni tanlang ("$ qidiruv materiallari" ni tanlang
garchi siz:
("$ Qidiruv materiallari" ga qarshi ("$ qidiruv materiallari" ga qarshi ("$ qidiruv materiallari") ga qarshi ("$ qidiruv materiallari") ga qarshi ("$ qidiruv materiallari") ni tanlang.
Tezlik etarlicha yuqori - hatto ba'zi hollarda qidiruv kabi tezroq
Yuqoridagi barcha ishlari MySQL 3.23.23 versiyasidan boshlanadi
To'liq matn ko'rsatkichlarini yaratishda bir nechta maydonlar uchun 2 ta variant mumkin:
Jadval jadvali (dalada 115), dala2 matn, kasb (maydoni, dala2)) Jadval jadvali (dala1 Varar (LIV1), Fultt Matt (SPORT2))
Birinchi holda, so'rov mumkin:
Maslahat maydonidagi *, maydon1, dala2 ("$ qidiruv materiallari" ga qarshi ("$ qidiruv materiallari" ga qarshi)
muhokislik darhol barcha sohalardan hisoblanadi. Ikkinchi holatda bunday so'rov xatoni keltiradi. Bu erda biz quyidagicha dollarni hisoblaymiz:
Relev dehk tomonidan jadval tartibidan Relev stolli tartibidan ("$ qidiruvlar" ga qarshi ("$ qidiruv materiallari" ga mos keladigan maydonni tanlang
Ikkinchi variant so'rovlarda biroz murakkabroq, ammo menimcha, yaxshiroqdir, chunki Qidiruv moslashuvchanligini oshiradi - har bir soha uchun, masalan, muhimligi va maydonlar ularni ushbu koeffitsientga ko'paytirish uchun maydonlar bilan belgilanishi mumkin. Qidiruv iborasi katta koeffitsient bilan dalada bo'lish uchun "ko'proq" bo'ladi. Masalan, agar biz indekslangan resurslar ma'lumotlari sahifalarini qidirsak, sahifaning nomi Meta yorliqlari tavsifi yoki kalit so'zlarning asosiy koeffitsienti bilan belgilanadi.
3 qism: dolzarblik bilan mashqlar
Avval Fultextext indeksini qanday qo'shish mumkin:
MySQL\u003e Angliya stol Articlea-ni qo'shish (ZTEnt); Xato: "ZTEXT" ustuni MySQL tipidagi "Artyam" turi bilan kalit shaklida ishlatilishi mumkin. \u003e Matnlia Articlea-ni qo'shish Matchext (Ztext); so'rov OK, 36 pog'onaga ta'sir ko'rsatdi (10.00 sekund)
Matn indekslari faqat myisam turlarida amalga oshirilishi mumkin. Matnlar jadvaldan olingan va indeks fayliga tushiriladi va baza o'sadi. So'rovlarga kelsak. Relev maydonini qaerda bo'lsa, undan foydalanish mumkin emas:
Relev\u003e 0 buyurtma bo'yicha Relev\u003e 0 buyurtma bo'yicha Selev ("$ qidiruv materiallari" ni tanlang ("$ qidiruv materiallari" ni tanlang
Garchi siz:
("$ Qidiruv materiallari" ga qarshi ("$ qidiruv materiallari" ga qarshi ("$ qidiruv materiallari") ga qarshi ("$ qidiruv materiallari") ga qarshi ("$ qidiruv materiallari") ni tanlang.
Hisoblangan maydon, albatta, barcha sintaksis qoidalarida foydalanib bo'lmaydi, ammo quyidagilardan foydalanish mumkin:
Relv dehk tomonidan 0 tartibini bo'shatish\u003e 0 buyurtma bo'yicha Selev-ni stolda ("$ qidiruv materiallari" ni tanlang)
O'yinni qidiring, Oleg yozganidek, faqat so'z bilan amalga oshiriladi. ... Biroq, siz faqat o'zingizni saralashingiz mumkin va shunga o'xshash tanlashingiz mumkin (bu, albatta, ishlashiga ta'sir qiladi, hatto qancha narsani bilmayman).
"Reeve\u003e 0" holatini olib tashlaymiz, biz saralashni qoldiramiz. Qolganlari avvalgidek, natijada bo'lgan satrni ishqalang va operatorlar kabi bir nechta so'rovga murojaat qiling:
Relev desci tomonidan "% $ Word2%" yoki "% $ Word2%" yoki "% $ WIDE2%" buyrug'i bilan "$ soxtali" yoki maydonga o'xshash maydonga moslang ("$ qidiruv materiallari" ni tanlang.
4 qism: taklif qilish boshlandi
MySQL ma'lumotlar bazasida dolzarblikni saralash bilan mavzuni qidirishda davom etyapman.
MySQL ma'lumotlar bazasining so'nggi versiyalarida dizaynga qarshi to'liq matnli indeksatsiyalash va mos keladigan maydondan foydalanish uchun taqdim etadi. Biroq, barcha serverlar mysql-ning so'nggi versiyasi emas va barcha hosting provayderlari tizimning ishonchliligi sabablari uchun dasturiy ta'minotni yangilashni xohlashmaydi.
Bir vaqtning o'zida men dolzarblikni saralashni qidirish bir nechta so'rovlarda bo'lishi kerak deb taxmin qildim va shuning uchun uni umuman olmaslik yaxshiroqdir. Munutsiyaning fikriga ko'ra, men turlicha tashrif buyurgan savollarga javob berishi mumkin, ammo men qo'rqib, bunday dizaynni taqdim etdim.
Biroq, Sayt-Ska sayt quradigan firmalar xodimi, ular o'z saytlarida qatnashadigan qidiruv tizimini tuzdilar. Men albatta so'rovni eslayman, men buni takrorlashga harakat qilaman:
Sarlavha, Sana_format (Moliyaviy_Date,% E.% C.% Y), agar ("% Word1% kabi matnli matn" bo'lsa, agar ("% Word1%" 9 bo'lsa, 3 * 10, 0) , 0) + agar ("% Word3%", agar "% World3%",% "% Word1%" yoki matn kabi "%" kabi matnlar bilan bog'liq bo'lgan. "RESFESSECESSECT, Moddiy_Date Decs" tomonidan "% Word3%" buyrug'i
Bu juda g'alati ko'rinadi, lekin u hatto MySQLning eski versiyalarida ishlaydi. Men ushbu so'rov bilan ish tezligini taqqoslashga harakat qildim:
Sanoat, Sane_formatni tanlang ("% Word1 Word2 Word3" yoki "% Word2%" kabi matnga mos keladigan jadvalga muvofiqligi. "% Word3%" buyrug'i "% Word3%" buyrug'i bilan REDVEECESSESS, Calcal_Date Decs
O'rtacha, universal so'rovning tezligi yangi dizaynlardan foydalanishdan ikki baravar kam. Bu juda mantiqiy narsa - shunchalik ko'p qirrali narsa, resurs intensivligi qanchalik ko'p.
Keling, bunday so'rovni avtomatik ravishda qurishga harakat qilaylik. Uzun satrni, shuningdek barcha noto'g'ri belgilar va qisqa so'zlarni o'chiring. So'rovni chizing.
$ So'rov \u003d "Sarlavha, Sana_formate,% E.% C.% Y"% Y "% Y"% Y "'. (Suctr_cuct ($ Suct_Cals). + 1). "* 10, 0) + agar ("% ","% ", $"% ", $ 0, 9, 9, 0) "%" ga o'xshash matnning dolzarbligi sifatida. Str_Replace ("%", $ "%" yoki matnli "%", $
Juda qiyin emas. To'fonlardan ishonchlilik va himoya qilish uchun siz so'rovda so'zlarning sonini cheklashingiz mumkin.
Oldingi nashrlarga ba'zi qo'shimchalar
Jadvalda topilgan satrlarning umumiy soni. Albatta qidiruv natijalarini namoyish qilish uchun siz cheklangan bayonnomadan foydalanishingiz kerak (har safar ushbu parametrni shakllantirish, tayyor funktsiyalardan foydalaning). Agar so'rovda hech qanday guruh operatsiyalari amalga oshirilmasa, darhol so'rovda (*) php mysql_num_num_num_num_ows () funktsiyasidan emas. Siz katta jadvallarni tekshirishingiz mumkin. Agar guruh operatsiyalari ishlab chiqarilsa, biz hisobdan so'raymiz (aniq)<поле, по которому группируем>), lekin guruhsiz.
Yorug'lik. Agar matnlarda HTML teglari bo'lmasa, yashash osonroq
Agar teglar matnda ishlatilsa, ya'ni uchta variantni ajratish b) B), foydalanuvchi foydalanuvchini ko'rmaydi (bu juda qiziq foydalanuvchidan tashqari), shunda siz indeks maydonini yaratishingiz mumkin Teglar va belgilar bo'lmaydi [^ \\ w \\ xff \\ xff \\ s] bo'sh joylar bilan almashtiriladi (bu belgilar qidiruv satridan kesilgan, deb qidirish amalga oshirilmaydi). Ushbu holatda qidirish va yoritgichda aniq indeks qilish. c) Ilgari Teglarni srip_tags () funktsiyasi bilan kesilgan faylni odatiy maydondan ajratib oling.
Har doimgidek qidiruv kodi to'liq versiyasi, chunki har doimgidek fayllar ro'yxatida.
Hali ham savollar mavjud yoki tushunarsiz narsamiz - o'zimizga xush kelibsiz
11.1K.
Har qanday saytdagi eng mashhur va zarur funktsiyalardan biri bu maxsus shakl yordamida amalga oshirilgan qidiruv. Ushbu funktsional imkoniyatlarga tashrif buyuruvchilarga saytdagi tarkibini tezda topishga imkon beradi.
Bugun biz saytlar bazasi jadvallaridan intervyu olib boradigan va saytdagi joriy menejerlar haqida ma'lumotni namoyish etadigan maxsus shakldan foydalanib, saytni qidirishni qanday qilishni aytib bermoqchimiz. Siz hozirgi xodimlar haqida ma'lumot beradigan ma'lumotlar bazasi jadvallarini yaratishni o'rganasiz.
PHP-dan foydalanib qidirish shakllarini ishlab chiqish, shuningdek SQL bilan tanishish ( Tuzilgan so'rovlar tili.) - ma'lumotlar bazalarida keltirilgan ma'lumotlarni to'plash, yozuvlar va o'zgartirish uchun maxsus til. Boshlashdan oldin, biz buni tavsiya qilamiz loyiha fayllarini yuklab oling.
Sizga kerak bo'lgan narsa
MySQL ma'lumotlar bazasi bilan ishlash vositasi.
PHP qo'llab-quvvatlashi bilan mahalliy yoki masofaviy server.
Matn muharriri.
Ma'lumotlar bazasini yarating
Agar siz xostingda ma'lumotlar bazasi bilan shug'ullanishingiz mumkin bo'lsa, tegishli ko'rsatmalar yoki yordam olish uchun ishonch bilan bog'laning. Ma'lumotlar bazasi yaratilgandan so'ng, siz uni ulash, stol yaratish va unga kerakli ma'lumotlarni yozishingiz kerak bo'ladi.
MySQL-ni boshqarishning eng mashhur vositasi php m admini, ushbu vositamiz bizning hozirgi qo'llanma uchun etarli bo'ladi.
Stol yaratish
Bizning stolimiz quyidagi formatda yaratilishi kerak:
Ustun nomi.
Ma'lumotlar turi
Uzunligi.
Null yoki null emas
Birlamchi kalit?
Avtomatik o'sish.
Id
Int.
1
Null emas
Ha
Ha
Ism.
Varar.
50
Null emas
Yo'q
Yo'q
Familiya.
Varar.
50
Null emas
Yo'q
Yo'q
Elektron pochta
Varar.
50
Null emas
Yo'q
Yo'q
Telefon raqami.
Varar.
15
Null emas
Yo'q
Yo'q
Ma'lumotlar bazasi ustunlik va satrlardan iborat, chunki Excel kabi. Birinchi ustun sizga ismlar bo'yicha ma'lumotlarni aniqlashga imkon beradi. Keyinchalik ma'lumotlar ustuni (ma'lumotlar turi), bu ustundagi ma'lumotlar turini ko'rsatadigan ma'lumotlar turiga kiradi. Vaqtinchalik maydon jadval ustuniga maksimal xotiraning maksimal miqdorini (saqlash) ko'rsatadi. Biz ko'proq moslashuvchanlikni beradigan o'zgaruvchidan foydalanamiz. Boshqacha qilib aytganda, agar to'liq ismning uzunligi 50 ta belgidan kam bo'lsa, unda zaxiralangan joyning faqat bir qismi egallab olinadi.
Va bu xodimlar orasida bo'sh qiymatlar bo'lolmaydi ( null, bo'sh). Birinchi qator sariq rangda ajratilgan, chunki ID ustunligi bizning asosiy kalitimiz. Ma'lumotlar bazasidagi asosiy kalit har bir kirish noyob ekanligini ta'minlaydi. Ushbu ustun avtokrilni qo'llaydi, bu bizning ma'lumotlar bazamizdagi har bir kirish avtomatik ravishda noyob raqamga tayinlanadi.
Biz xodimlar vakillarini stolga taqdim etamiz
Siz uni stol bilan tushuntirib, uni ma'lumot bilan to'ldirishni boshlang. 6 ta yozuv tartibni yodda tutish uchun etarli. Quyida men sizga o'zingizning misolingizni taklif qilaman:
Ustun identifikatori.
Ism.
Familiya.
Elektron pochta
Telefon raqami.
2
Rayan.
Butparast
[Elektron pochta bilan himoyalangan]
417-854-8547
3
Brent.
Kallahan
[Elektron pochta bilan himoyalangan]
417-854-6587
Shaklni ishlab chiqish
Google-dan qidirish shaklini yaratish uchun har qanday mos yozuv muharririni oching. Bepul PSPod-dan foydalanishni tavsiya qilaman. Siz har qanday matn muharriridan foydalanishingiz mumkin, u erda sintaksisning yorug'ligi ta'minlangan. Bu PHP kodini yozish va disklash jarayonini sezilarli darajada osonlashtiradi. Qidiruv shakli uchun sahifani yaratish orqali uni saqlash uchun uni saqlab qolishni unutmang .PTP formatida, aks holda PHP kodi to'g'ri ishlov berilmaydi. Hujjatni saqlab qolishingiz bilanoq, quyidagi belgilarni ulang:
Kontaktlarni batafsil izlash
Siz ism yoki familiya bo'yicha qidirishingiz mumkin