დღეს მე ითამაშა ოპტიმიზაცია ნელი SQL განაცხადის გვარის

SELECT * FROM 'table' WHERE `field` LIKE '%word%'

სად არის პრობლემა ახლა აქ – ბოლო ნაწილი '% სიტყვა%’ და კიდევ უფრო კონკრეტული გმირები % ადრე სიტყვა, რომლებიც. მიმაგრებული სიმბოლო % ,სანამ რაიმე მნიშვნელობა, პირდაპირ გვაიძულებს შეკითხვის პირდაპირ ნელი, რადგან ამ გზით განაცხადის აჩერებს us გამოიყენოთ მაჩვენებლების სფერო. გადაწყვეტილებები, როგორც ყოველთვის, მაგრამ ყოველთვის არ არის ნათელი 😆 საერთო MySQL მათ აქვთ ამ პრობლემის სრული ძიება ინდექსირებას სფეროში. როგორ ამჯამად შეცვლის სფეროში აქვს ბევრი წერილობითი დოკუმენტაცია, მაგრამ დაჩქარების აღწერს თუ როგორ უნდა შეიცვალოს უმთავრესი მოთხოვნა, იმიტომ, რომ ჩვენ კიდევ ცოტა დრამა საბოლოოდ. Sledka როგორც მოქმედი სრული ველში, პროგრამა უნდა იყოს ცვლილებები ტიპი:

SELECT * FROM `table` WHERE MATCH (field) AGAINST ('word')

ასე რომ სტრუქტურა აშკარაა და არ სჭირდება ზედმეტი დისკუსია. აღნიშნული მოთხოვნის ძალაში შევა, თუ სიტყვა, თქვენ თხოვნით მინიმუმ 4 სიმბოლოები, ნაგულისხმები მნიშვნელობა, თუ გვინდა, რომ ცვლილებები უნდა მიუთითოთ ღირებულება, която желаете в my.cnf в частта [mysqld] დეკლარაცია ft_min_word_len= 3 ან 2, 1 не е добър избор очевидно 😉 . მას შემდეგ, რაც შეცვლის ღირებულება და გადატვირთვა mysql სერვერზე საჭიროება უნდა გააკეთოს რემონტი თქვენი მაგიდები, იმისათვის, რომ ახალი ინდექსირებას შევა ძალაში. ჯერჯერობით ყველაფერი ნათელია: ცვლილებების შეტანა, გადატვირთვის, rebildvam ინდექსები და ნუ ჩემი თხოვნა და ანაზღაურება 0 შემოწმების მიზნით, 😀

SHOW VARIABLES

მე ვხედავ, რომ ღირებულებები, მე ვთხოვე ძალაში, rebildvam ერთხელ ინდექსები – იგივე შედეგი. უსიამოვნო 🙄, ძალიან არასასიამოვნო. აქედან იგი დაიწყო დიდი ლანძღვა და scratching გასაღები ფარდული 😀, რომელიც იყო საკმაოდ, საკმაოდ საინტერესო. მთელ, კითხვა დავიწყე დოკუმენტაცია არ ვიცი, რომელი გზა და მოვიდა საინტერესო პასაჟი

Such a technique works best with large collections (სინამდვილეში, იგი ყურადღებით tuned ამ გზით). ძალიან პატარა მაგიდები, სიტყვა განაწილების ადექვატურად არ ასახავს მათი სემანტიკური მნიშვნელობა, და ეს მოდელი შეიძლება ზოგჯერ აწარმოოს უცნაური შედეგები. მაგალითად, მიუხედავად იმისა, რომ სიტყვა "MySQL" იმყოფება ყოველ გრაფაში სტატიები მაგიდა ნაჩვენებია ადრე, საძიებო სიტყვა არ აწარმოებს შედეგები

ГРЕДА 😳 Дам табличката ми беше малка – მიუხედავად ამისა, ეს იყო ტესტი. ჩვენი განაცხადის დიდი მაგიდა მეტი 2 000 000 მიზნით და იქ რამ ეძინა. ისე ახლა ნათელია პრობლემა. იმისათვის, რომ კონკრეტული გადაწყვეტილება, მე აღვნიშნო მოკლედ, რომელიც მხარს უჭერს სრული ტექსტი ძიება 3 გაფართოებული რეჟიმი ლოგიკური , გამოხატვაზე და ბუნებრივი ენით როგორც ბოლო ნამუშევარი იყოს. რეჟიმებისთვის შეგიძლიათ ნახოთ დოკუმენტაცია, მე ავუხსნათ 2-3 ლოგიკური სიტყვა, რადგან ეს არის გასაღები. იგი მხარს უჭერს ლოგიკური ოპერატორები ასეთი და, ან , არ და ასე შემდეგ და შეუძლია ჯადოსნური პოპულარული ფრაზები, ერთ-ერთი, არსებობს სხვა და სხვა. შენარჩუნება და სიმბოლოები *, რომელიც უდრის wildcard სიმბოლო % ეს არის სასარგებლო 😉, როდესაც საძიებო ტერმინი ნაკლებია ხანგრძლივობა ft_min_word_len და პატარა ქაღალდის ;). ყოველ შემთხვევაში, მე მაგიდასთან შესახებ 100 იმისათვის აკეთებს სრულყოფილი სამუშაო. ტოვებს მხოლოდ ვხედავ და დასრულდა მოთხოვნა:

SELECT * FROM `table` WHERE MATCH (field)
AGAINST ('*word*' IN BOOLEAN MODE)

აქ ჩნდება მომენტში თუ არა ჩვენი ინდექსირებას მუშაობს სიმბოლოების – პასუხი არის, არ ვიცი. Принципно мисля, че да, защото не е казано друго в документацията, но в документацията очевидно не се казват или показват много неща 😀

გაუმჯობესებულია Zemanta

How PulseAudio works.

გამოსახულების მეშვეობით ვიკიპედია

Днес най- накрая след една камара време реших да си купя още кабели за да си закача 5.1 аудио системата ми пълноценно. Досега я ползвах със нормален стерео кабел и след това системата сама си правеше деление на аудио каналите. Което не е никак добре. Сега вече за всеки канал си има отделен кабел и звукът е доста по чист (естествено), по плътен а на филмите усещането е подобрено много кратно. Имаше няколко малки драми които се оправят относителни интуитивно. Основната драма беше, че звукът тръгна само в front колоните без буфер център или задните след като пренастроих звуковата схема на Gnome да е 5.1 . В повечето плеъри имам опция за настройка в alsa часта за колко канално да е аудиото но има програми в които отсъствува такава възможност като да речем adobe flash player. Първоначалната ми идея беше просто да пренастроя .asoundrc като задам параметри да дублира звукът по всички каналирешение с което не се гордея защото не го обмислих изобщо. Конфигурацията тривиална :

pcm.!default {
type plug
slave.pcmsurround51
slave.channels 6
route_policy duplicate
}

С нея нещата си дойдоха на място докато не осъзнах че alsa може да обработва само по 1 процес и докато тои не приключи да я ползва друг не може. 😳 Неприятно но факт бях забравил времената в който слушаш или player или youtube и ако едното ти омръзне трябва да затвориш програмата, че да ползваш другата апликация. Което веднага ми подсказа къде е истинския корен на нещатаконфигурацията на pulseaudio сървъра. Pulseaudio е най грубо казано прокси сървър който обработва информацията между аудио хардуера и аудио софтуера който иска да го ползва. Система която с години се доказа много кратно. При нея конфигурацията се намира в /etc/pulse/daemon.conf. По подразбиране всичко е закоментирано с ; така че ако не сте праивли промени може направо смело да добавите следните редове накрая на файлът:

enable-lfe-remixing = yes

default-sample-rate = 48000
default-sample-channels = 6

Имената на опциите са очевидни задаваме стойноста на колко канално аудио ще сме малък тунинг на стандартния битрейт и разрешване на lfe ремиксирането. След това остава да рестартирате alsa и pulseaudio с

sudo /etc/init.d/alsa-utils restart && pulseaudio -k

От тук нататък за мен остана само а се наслаждавам на вече по доброто аудио.

edit: .asoundrc трябва да е със съдържание за да нямате проблеми със skype и някой други апликации

pcm.pulse {type pulse }
ctl.pulse { type pulse }

გაუმჯობესებულია Zemanta