Как да се инсталира и конфигурира Сфинкса

Как да се инсталира и конфигурира Сфинкса.

Изтегляне Сфинкса (вземе версия на MySQL и произтичащи от 15 езика Win32 бинарни файлове w / MySQL + PgSQL + libstemmer + id64 подкрепят съответната битова дълбочина на вашата операционна система), разопакова като D: \ температура \ а \

Инсталацията е завършена сфинкс. В debiane просто правя ап-да инсталирате sphinxsearch.

Добави конфигурация за индексиращия като г \ температура \ S \ sphinx.conf базирани sphinx-min.conf.in, потребителя и интуиция (sphinx.conf файл приложен по-долу.).

В upomnyauty конфигурационния папка и влезте данни, така че да ги sozadem в D: \ температура \ а \

Атрибути (добавят и темата) - това е номер, който може да се съхранява в индекса за търсене и след това да ги използвате в състояние за търсене (търсене на определена тема или подреждане по дата).

(Под Linux печат показалец, просто защото там той е регистриран в системната папка). Ако всичко е наред, текстът ще покаже, и там ще видим:

индекс индексиране "index_news".

Внимание: collect_hits: mem_limit = 20480 KB твърде ниска, увеличаване на 25856 KB

Малко памет, необходимо е да се най-малко 25 MB (и защо е толкова много?)

общо 4 Документи, 1418 байта

общо 0.030 сек, 45854 байта / сек, 129.34 документи / сек

4 документ от база данни за индекса

Добре, индексът е създаден в татко данни, проверете дали работата за търсене? новобранец

Това е pechalka, нищо не е намерено. И все пак, vindovyh конзола не знае как да се UTF-8 и нарушава нашите bukovki. Опитайте английски:

Сфинксът ни даде назад номер новини, глоба. Сега ние да извършите търсене, демон и се пристъпи към PHP (и за подкрепа на UTF-8). Започнете демона:

(--console, че той не се опитва да се измъкне на заден план и може да бъде спрян от Ctrl + C). Няма да има признаци, че всичко е наред. От PHP за сфинкса могат да бъдат свързани по 2 начина:

  • през MySQL-съвместим протокол за свързване с демона като база данни и търсене с помощта на SQL-заявки
  • sphinx.api.php и използване на двоичен протокол

Нека започнем с възможности: 1. Писането тест-sql.php (в кода на приложението).

Пусни го от конзолата или през уеб браузър и сървъра (търсене демон трябва да работи разбира се). Ако всичко е наред, в отговор да се върне масив по този начин, с идентификационния номер на документа и неговите атрибути:

Run, също видите множество резултати. Е, когато всичко работи.

Ако се опитаме да погледнем на думата въз основа на деклинация, като "курсове" Не намирам нищо, защото в текста, че няма думи. Това не е добро. Нека да го оправя с помощта на вградени функции на Сфинкса.

Свържете български и английски език. Stemmer, писане в раздела за довереник в index_news:

Самият индекс не актуализира, така че спрете демона (Ctrl + C), стартирайте отново индекса и да рестартирате демона (демон работи във фонов режим, можем да добавим ключовата --rotate показалец и той ще поиска да рестартирате индексите на демон, операцията по търсене няма да бъде прекъснато) :

Сега се опитват да търсят думата "Разбира се" чрез PHP-скрипт. Всичко трябва да работи.

Lemmatayzer сигурност работи по-добре, така че е по-добре, за да изтеглите необходимите речници и да го свържете.

Сфинкса все още може да намали HTML-тагове и декодира HTML-субект (параметър html_strip), да определят диапазон от символи (charset_table), изключения и синоними (словоформи и изключения).

Можете да определите кои знаци са и не са част от една дума (например думите разделени с долна черта разглеждат като различен).

Също така, може да се изгради Сфинкса откъси в резултатите от търсенето (отрязани части от текста в непосредствена близост до подчерта ключовата дума) от BuildExcerpts () функция в API.

Добре, имаме индекс за търсене. Но как да го актуализира, когато се добавя или заличава, старите нови данни? Е, с премахването на прости, ако сфинкс се върна, за да ни несъществуващ номер в таблицата за запис - тогава тя се отстранява. Как да добавите данни за индекса?

  • Основният индекс съдържа всички записи (или всички записи по-стари от определена дата), напълно възстановен всеки час / ден в размер на zaivisimosti данни
  • RT-индекс, който съхранява само нови данни, които не са в основния индекс, който се актуализира в реално време, което се изчиства чрез повторно индексиране

Добави RT-индекс в конфигурацията:

Добре, сега показалец и да рестартирате демона. Добавяне Rt-индекс е най-SQL заявки, така че отделете SQL-test.php и леко се преработи:

Стартирайте файла. Сега търсене уверете се, че търсенето на думата "проверява" и "в реално време" ни дава резултати. Ако търсите чрез SQL, а не чрез приложния програмен интерфейс, не забравяйте да посочите в заявката двата индекса (Изберете (ОТ index_news, rt_news.)).

Индексът може да бъде актуализиран чрез прилагане на нов запис със същия идентификатор помощта на ЗАМЕНИ, проверете:

Нека покажем, че тя вече е в търсене на дума котката и дума в реално време не rezaltotov на.

Е, все още можете да изтривате записи от RT-индекс, използвайки изтриете от rt_news КЪДЕ ПО идентификатор (1, 2, 3)

  • Оператор или: word1 | WORD2
  • Операторът не може: word1 -slovo2
  • подготвя за групиране
  • mngogo и други опции, които имате в ръководството

Можете да сортирате и резултати на групата между различни атрибути.