| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
serglif 13.10.2004 10:57
Вот несколько выкушенный из контекста, кусок кода, который должен искать в задаваемых столбцах таблицы обработанные варианты запроса (обработанные - это когда пользователь спросил "молоток", а программа ищет "молоток", "Молоток", "МОЛОТОК". Понятно, что если используется LIKE в СУБД, то эта обработка излишняя, но допустим, что в примере такой возможности нет и таблица грузится из файла)#Следующие три конструкции добавлены для некоторого контекста
$table[client]
$question['завод']
$items[^table::load[${table}.cfg]]
#Задаются поля, в которых необходимо искать
$searchfields[
$.client[
$.0[name]
$.1[ur_name]
$.2[phones]
]
]
#Обрабатывается исходный запрос и создается хэш новых
$question[^question.trim[]]
$character[^question.left(1)] $character[^character.upper[]]
$word[^question.mid(1)] $word[^word.lower[]]
$questions[
$.1[^question.upper[]]
$.2[^question.lower[]]
$.3[${character}${word}]
]
#Вот собственно конструкция, которая не хочет парситься!
$items[^items.select(
^searchfields.$table.foreach[key;value]{
^questions.foreach[nkey;nvalue]{
(^items.[$value].pos[$nvalue]>-1)
}[||]
}[||]
)]Результат исполнения последней конструкции: