ENG/RUS   Главная :: RiSearch :: RiSearch Pro :: RiSearch PHP :: RiLax :: RuMor :: Forum

Введение :: Документация :: Купить :: License

На главную

RiLax Manual

© С. Тарасов

Расширенный поиск

      Чтобы использовать вохможность расширенного поиска необходимо указать тип каждого поля и какие поля нужно индексировать. Возможны следующие варианты.

  • 1 - поле будет проиндексировано как обычный текст.
  • 2 - поле содержит ХТМЛ теги.
  • 4 - поле является целым числом. Для таких полей возможны операции сравнения (то есть можно искать документы, в которых данное поле имеет значение более 1000 и т.п.).
  • 8 - поле является вещественным числом. Как и для предыдущего случая возможны операции сравнения. Учтите, что индекс, созданный для данного поля не будет обладать переносимостью между различными платформами (хотя остальные файлы останутся переносимыми и все другие функции поиска будут работать).
  • 16 - поле является строкой с датой. Скрипт попытается распознать дату и перевести ее в другой формат, пригодный для сравнения. Дата может быть представлена одним из следующих видов: 23.03.98, 23/03/98, 23.03.1998, Mar 23 1998. Другие форматы могут быть добавлены при необходимости. Порядок следования числа и месяца (сначала число, затем месяц или наоборот) определяется параметром date_format в конфигурационном файле.

      Для каждого поля выберите желаемые варианты, просуммируйте числа и укажите их в конфиге следующим образом:

$attr_conf[0] = 1+2;
$attr_conf[1] = 1+2;
$attr_conf[2] = 1+2+16;
$attr_conf[3] = 8;
$attr_conf[4] = 4;

      Например, у вас есть база ZIP-кодов США в следующем формате:

76050;+32.336003;-097.311068;;GRANDVIEW;48;251;TX;TEXAS;JOHNSON
76051;+32.932843;-097.080802;;GRAPEVINE;48;439;TX;TEXAS;TARRANT

где:

  1. 76050 - ZIP-код
  2. +32.336003 - широта
  3. -097.311068 - долгота
  4. "" - служебное поле
  5. GRANDVIEW - название почтового отделения
  6. 48 - код штата
  7. 251 - код графства
  8. TX - абревиатура штата
  9. TEXAS - штат
  10. JOHNSON - графство

      Следующие параметры можно использовать в данном случае:

$attr_conf[0] = 1+4;
$attr_conf[1] = 0;
$attr_conf[2] = 0;
$attr_conf[3] = 0;
$attr_conf[4] = 1;
$attr_conf[5] = 1+4;
$attr_conf[6] = 1+4;
$attr_conf[7] = 1;
$attr_conf[8] = 1;
$attr_conf[9] = 1;

Язык запросов

  • Поиск в определенных полях - необходимо добавить в строку запроса номера полей, в которых должно содержаться заданное слово (например "&a=1&a=3"). Например, если нужно найти все ZIP-коды в графстве DALLAS, можно использовать такой запрос:

    search.pl?q=DALLAS&a=9

  • Если требуется найти одно слово в одном поле и другое слово в другом поле, это можно сделать следующим образом:

    search.pl?q8=TEXAS&q9=DALLAS - все ZIP-коды в штате TEXAS в графстве DALLAS

    (если еще добавить "q=word", то это слово будет искаться во всех проиндексированных полях).

  • Операции сравнения для числовых полей:

    • a4lt=10 - значение поля 4 меньше 10;
    • a4le=10 - значение поля 4 меньше или равно 10;
    • a4gt=10 - значение поля 4 больше 10;
    • a4ge=10 - значение поля 4 больше или равно 10;
    • a4eq=10 - значение поля 4 равно 10;
    • a4ne=10 - значение поля 4 не равно 10;

    Например, все ZIP-коды в диапазоне 0-1000:

    search.pl?a0gt=0&a0le=1000

    Если в одном запросе используется несколько операций сравнения, они обрабатываются используя логику "AND", то есть "a1lt=10&a2gt=10" найдет документы, где поле 1 меньше 10 и поде 2 больше 10. Добавьте параметр "ctype=OR", чтобы изменить логику на "ИЛИ" ("a1lt=10&a2gt=10&ctype=OR").

    Для полей, являющихся датой, операции сравнения записываются следующим образом:

    search.pl?q0=ivanov&a2gt=01.01.2000

Сортировка результатов

      Результаты поиска могут быть отсортированы по какому-либо полю. Для этого нужно использовать параметр "s" с номером поля (например "search.pl?q0=ivanov&a2gt=01.01.2000&s=2"). Учтите, что сортировка по текстовому полю может потребовать значительное количество времени, если поиск вернул много совпадений.

      Результаты можно сортировать сразу по нескольким полям (работает только с текстовыми полями). Например: "q=word&s=2_3" - результаты будут отсортрованы по второму полю, а если второе поле совпадает у нескольких записей, то по третьему.

Печать результатов

      Используйте такую строку в шаблоне - %attr_N% (где N - номер поля) чтобы напечатать значение поля N.



http://risearch.org С.Тарасов, © 2000-2003