Idag spelade jag för att optimera en långsam SQL typ av begäran

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

Vart är den besvärande ena stunden här – de sista del ord % ‘ %’ och i ännu större konkretion tecken % före ordet, för det vi gör. Jokertecknet % ,innan något värde, vår ansökan översätter direkt direkt till en långsam, eftersom på detta sätt programmet stannar oss för att använda index av den. Som alltid finns det lösningar, men är inte alltid tydliga 😆 allmänt MySQL har du en lösning på problemet med fulltext Sök Indexering av den. Hur är ändringen av fältet det är en hel del skrivet i dokumentationen, men i en hast kommer jag att beskriva hur jag ändra topp begäran, eftersom vi kommer att få lite dramatik slutligen. Göra en söt som gäller för fulltext fältet upp, frågan behöver ändras i formuläret:

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

Så strukturen är uppenbara och det finns ingen anledning för onödig diskussion. Ovanstående fråga träder i kraft, Om ordet, som du gör en begäran minst 4 symbolen, Detta är standardvärdet, Om du vill ändra den, måste du ange värdet, която желаете в my.cnf в частта [mysqld] med deklarationen ft_min_word_len= 3 eller 2, 1 не е добър избор очевидно 😉 . När du ändrar värdet och starta om mysql server-behovet av att göra en reparation av tabeller, för nya indexering träder i kraft. Här rensa alla: ändrar du, Jag återställa, rebildvam index och göra min begäran och returnerar 0 Kontrollera med 😀

SHOW VARIABLES

Jag ser att värdena, Jag har frågat har trätt i kraft, rebildvam index igen – samma resultat. 🙄 Hat, mycket obehagligt. ОТ ТУК НАТАТЪК ЗАПОЧНА ЕДНО ГОЛЯМО РУГАЕНЕ И РОВЕНЕ ЗА КЛЮЧА ЗА БАРАКАТА 😀 КОЙТО СЕ ОКАЗА ДОСТА, ДОСТА ИНТЕРЕСЕН. КАТО ЦЯЛО, КАТО ЗАПОЧНАХ ДА ЧЕТА ДОКУМЕНТАЦИЯТА ЗА НЕ ЗНАМ КОЙ ПЪТ И СТИГНАХ ДО ЕДИН ИНТЕРЕСЕН ПАСАЖ

Such a technique works best with large collections (I själva verket, Det var noga anpassad hitåt). För mycket små bord, ordet distribution återspeglar inte tillräckligt deras semantiska värde, och denna modell kan ibland ge bisarra resultat. Till exempel, även om ordet "MySQL" är närvarande i varje rad i tabellen artiklar visades tidigare, en sökning på ordet ger inga resultat

ГРЕДА 😳 Дам табличката ми беше малка – Det var fortfarande ett test. I en stor applikation Naših tabell med över 2 000 000 ordning och där saker är sover. Det har väl redan klart problemet. För att klargöra lösningen, Jag kommer att kort nämna, att fulltext Sök stöd 3 Avancerade lägen BOOLEAN , UTTRYCK och NATURLIGT SPRÅK som den sista verken som standard. Om de olika lägen kan du kontrollera dokumentationen, Jag ska förklara med 2-3 ord till BOOLEAN eftersom det är nyckeln. Den stöder logiska operatorer av typen och, ELLER , INTE och så vidare och kan göra något magiskt med sökfraser, att ha en, är det en annan, etc.. Stöder och symbol *, Det är motsvarigheten till jokertecken % 😉 Det är användbar, När söktermen är i längden av den ft_min_word_len eller små brickor ;). Åtminstone för mig vid bordet med om 100 linjen gör ett perfekt jobb. Det enda som återstår att se och den färdiga ansökan:

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

Här kommer nu en tid indexering verk med oss jokertecken – svaret är inte vet jag. Принципно мисля, че да, защото не е казано друго в документацията, но в документацията очевидно не се казват или показват много неща 😀

Förstärkt av Zemanta

How PulseAudio works.

Image via Wikipedia

Днес най- накрая след една камара време реших да си купя още кабели за да си закача 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 }

Förstärkt av Zemanta