|
Оказва се, че трудно може да се намери информация за това как може да се комуникира с Microsoft Indexing Service от PHP. Дори много PHP програмисти не знаят за тази възможност. Ако имате PHP сайт стартиран на Windows сървър и имате документи, които трябва да се намират по зададен критерий, тази възможност може да ви помогне в голяма степен.
Вероятно главната причина за оскъдната информация по въпроса е че PHP общността е основно общност, подкрепяща отворения код, докато Microsoft се оказва на другия полюс. По-голямата част от PHP сайтовете са стартирани на Apache web-сървъри върху Linux ОС, която няма вградена индексна система за файловете. Тези, които искат да разберат възможно ли е използването на IXSSO заявки в PHP страниците и как точно става, ще бъдат доволни да узнаят, че това става чрез създаване на IXSSO COM обект, по начин подобен на този в класическа ASP страница. Създаването на каталог в който да се търси чрез Indexing Service е привлекателна идея като за начало, но да направим коректно работещ такъв е отделен въпрос. Има някои дребни детайли, които могат да объркат всичко. За повече информация относно правилното създаване на каталог, можете да погледнете тук: setting up an Indexing Service catalog. И така, можете да създадете IXSSO.Query и IXSSO.Util обекти точно по същия начин, както в ASP разбира се с разликата, че трябва да се спази PHP синтаксиса.Тоест вместо „Server.CreateObject” ще използваме „new COM()”: CODE
Сега имаме IXSSO обекти и достъп до всички техни свойства и методи, като спазваме PHP синтаксиса естествено. Първо трябва да зададем кой каталог ще използваме чрез Indexing Service: CODE
Както се вижда, просто задаваме името на каталога. Следва да зададем какво ще търсим. В повечето случаи това е съдържанието (атрибут value) на текст-бокс (<input type="text"…>) за търсене, разположен някъде в страницата: CODE
Бихме могли да използваме Indexing Servers Advanced Query Language тук, но това излиза извън рамките на темата в този урок. Следващото важно нещо е да зададем кои колони искаме да получим в резултат на заявката. CODE
Можете да създадете и custom meta data columns във вашите документи и да ги дефинирате чрез Indexing Service. „Characterization” е една от проблемните колони, чиито колони почти винаги съдържат некоректни данни. Това е една от важните колони. Тя съдържа обща информация за документа, така че проверете дали колоната връща коректно данните. И още: ако имате PDF файлове във вашия каталог уверете се, че имате инсталиран „Adobe IFilter”. Последното, което трябва да направим преди да изпълним заявката е да зададем колоната по която искаме да е сортиран резултатът и максималния брой записи: CODE
Логично е да желаете документите за които има най-добро съвпадение да бъдат най-напред в списъка. Колоната „rank” носи информация за степента на съвпадение. Така, че сортираме по „rank”. Ограничение до 200 реда, показано тук изглежда малко, но за практическо използване това е нормална стойност. Повече редове биха накарали потребителя за се откаже от „ровене” и да стартира търсене с по-точен критерий. След като сме задали всички необходими параметри, сме готови да изпълним заявката: CODE
Този ред ще върне резултата във вид на указател към обект с редовете (result set). Сега можем чрез цикъл да вземем редовете един по един. По-долу е показан примерен код за това. Предполагаме, че таблицата, заглавния ред и затварящите тагове са написани. Тук за краткост показваме само оформянето на редовете: CODE
Премесването на вътрешния указател за текущия ред в началото не е необходимо ( $fileRS->MoveFirst() ), но добрия стил го изисква. Представете си, че оформите този цикъл във функция. Няма как да сте сигурни, че резултатът е не е използван някъде по рано в кода. Това е всичко необходимо за да направите търсене на документи по зададен критерий чрез PHP инсталиран на MS Windows и с използването на Microsoft Indexing Service. Източник: dynamicajax.com
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||









