< HomePage
!!! Понеже знам, че много от вас попадат тук търсейки за съвет свързан с хард- и софтуер вижте Компютърни Хитринки за именно тези постове в блога !!!
   <- Дневника

Добавяне на коментар

Петък, 14 Март 2008

Интересен въпрос, с които се сблъсках тези дни беше, как да направя търсенето по думи и фрази в сайта ни да работи по възможно най-добрия начин с възможно най-малко усилия. Очевидно да ползвам по едно търсене на дума и да обединявам резултатите щеше да е ужас, а LIKE "%бау мяу%" не върши работа защото бау и мяу трябва да са точно в този ред и с точно един интервал разделени.

Малко ровене в нета ми даде следното решение. Прави се FULL TEXT индекс на полетата в които е текста и после може да се търси в тях с FULLTEXT и CONTAINS командите на MSSQL за думи и фрази и даже за по-известните езици дори и с формите на думата. Като цябо решението е много просто - създава се индекса, създава се и индкс на таблицата която ще се ползва и се указва кои полета да се включат за търсене и това е 3 команди на кръст. Например

CREATE FULLTEXT CATALOG ft AS DEFAULT; % създава каталога
CREATE UNIQUE INDEX ui_ukTabID ON Tablename(SomeID); % създава уникален индекс на таблица по поле SomeID
CREATE FULLTEXT INDEX ON Tablename(SomeField LANGUAGE 0, OtherField LANGUAGE 0) KEY INDEX ui_ukTabID; 
								% парсва полетата 

Друг такъв интересен въпрос беше как най-сигурно да направя търсене с IN селекция. Старото решение, което ползвахме до сега беше да се сглоби заявката в стринг и да се изпълни с Exec но това си плаче за експлоитване, защото ако някои прекара кофти параметър и може да направи SQL Injection, затова вввввввсе спрях на едно друго решение - предава се xml параметър с дефиниция на таблица и после се ползва временната таблица с IN SELECT @XmlTable и така няма нужда от необезопасени параметри. Следния може направо да се ползва в IN заявката.

SELECT tempTable.item.value('.', 'VARCHAR(MAX)') AS Item
    FROM @list.nodes('list/item') tempTable(item)

Вечерта пък след като пак помогнах на Конрад да попренесе някой неща, се събрахме в тях да гледаме филм. Взехме Shoot em up - весело и не особено дълбокомисленно екшънче, което прави впечатлението, че гледаш филмиран комикс, особено кагот нашия човек трепе наред с...напрежението расте...моркови!

[ Добави коментар ]
Добавяне на коментар
Не пишете nicknames, освен ако не се обръщам така към вас!
user@example.com
http://www.example.com/

Коментарът трябва да е на кирилица или на английски. Останалите се трият.

Запомни адреса и името ми, за да не го пиша следващия път

Valid XHTML 1.0! Valid CSS!