Recent Changes - Search:

PmWiki

pmwiki.org

edit SideBar

UserInputIndex

API userinput

UserInputIndex - API индексации данных

API UserInputIndex позволяет строить выборки из базы записей UserInput по заданным элементам сохраненных данных. (Поскольку при сохранении данных UserInput в базу они сериализуются, обычными средствами SQL и БД это сделать бывает либо неэффективно либо вообще проблематично.)
UserInputIndex - это специальный обработчик, включающийся при сохранении записи в базу, который дублирует (и опционально обрабатывает) заданные значения полей в одну из вспомогательных таблиц.
Поля вспомогательной таблицы примерно таковы:

  • userinput_id - ИД записи UserInput
  • field_id - ИД индекса
  • value - значение.

Эти значения могут быть использованы затем для быстрой выборки из базы стандартными средствами реляционной базы: LEFT JOIN, RIGHT JOIN и т.д. Например, sql запрос, выбирающий все записи у которых поле data['foo'] равно "bar" может быть таким:

select * from userinput LEFT JOIN userinput_index_string as foo ON (userinput.userinput_id=foo.userinput_id AND foo.field_id=$field_id)
WHERE foo.value="bar"

Здесь $field_id - ИД индекса. Каждый UserInputIndex имеет запись в таблице userinput_index_fields и свой уникальный ИД. Также эта запись хранит название индекса, ключ ветки UserInput к которой он относится, а также perl_regexp выражения управляющие применением индекса к записям.

Edit - History - Print - Recent Changes - Search
Page last modified on February 02, 2012, at 03:10 PM EST