ng.fuzzytraverser
2007-11-15 17:50FuzzyTraverser - это специальный компонент, который позволяет правильно отобразить страницы сайта даже при не совсем точно набранном URL'е.
Утилиту рекомендуется использовать на сайтах, для которых ручной набор URL или обмен ссылками между пользователями являются нормой.
Продукт
| Название: | |
| ng.fuzzytraverser | |
| Выложен на PyPI | |
| Репозиторий |
Краткое описание пакета
Пакет разработан для того что бы дать возможность корректно отображать страницы, несмотря на то, что URL может быть частично набран с ошибками (заменами и пропусками букв и около того).
Продукт состоит из трех частей:
- FuzzyTraverser
Для его включения, контейнеру, который будет траверситься таким образом нужно назначит интерфейс IFuzzyTraverser, например, такой директивой:
<class class="zope.app.folder.folder.Folder"> <implements interface="ng.fuzzytraverser.interfaces.IFuzzyTraverser" /> </class>Имена всего содержимого выбранного таким образом контейнера можно будет набирать с ошибками. Степень чувствительности нечеткого траверсера к ошибкам можно настраивать, причем делается это двумя путями: установкой специальной настроечной утилиты и ее регистрация и через аннотации контейнеров, подвергающихся траверсу;
- FuzzyTraverserProperties
Это утилита, установка которой позволяет задать параметры нечеткого траверса. Утилита устанавливаетя в локальный сайт-менеджер, регистрируется с интерфейсом:
ng.fuzzytraverser.fuzzytraverserproperties.interfaces.IFuzzyTraverserPropertiesПараметры настройки следующие:
- On
- Нечеткий траверсер включен (иначе он работает как обычный траверсер);
- Rate
- Порог срабатывания - это та, максимально допустимая, степень искажение, при которой имя будет опознано. Указание величины ниже 0.5 не рекомендуется, особенно для системных областей сайта;
- Use
- Параметр не используется в этой версии;
- FuzzyTraverserAnnotation
Если необходима возможность настройки траверсера для отдельных областей сайта, то вам потребуется настройка через аннотации проходимых объектов. Что бы включить такую настройку, объекту должен быть назначен интерфейс IFuzzyTraverserAnnotable, например таким образом:
<class class="zope.app.folder.folder.Folder"> <implements interface="ng.fuzzytraverser.fuzzytraverserannotation.\ interfaces.IFuzzyTraverserAnnotable" /> </class>После этого у каждого такого объекта появится вкладка FuzzyTraverser, на которой можно настроить следующие параметры:
- On
- Нечеткий траверсер включен (иначе он работает как обычный траверсер);
- Rate
- Порог срабатывания - это та, максимально допустимая, степень искажение, при которой имя будет опознано. Указание величины ниже 0.5 не рекомендуется, особенно для системных областей сайта;
- Use
- Параметры этой аннотации будут использованы.
Последняя настройка носит очень существенный характер, так как аннотация создается у каждого объекта и пришлосьбы проходить по всему дереву объектов и устанавливать им правильные значения настроек в аннотациях.
Принцип работы
Существует модуль difflib, предоставляющий класс SequenceMatcher, предоставляющий метод ratio(). SequenceMatcher сравнивает две строки, находит отличия между ними, строит скрипт преобразования одной строки в другую. Метод ratio() возрващает значение, имеющее смысл сходства двух строк (чем короче скрипт - тем более похожи строки).
Траверсер пытается сравнить идентификатор объекта со всеми идентификаторами, которые есть в папке. Наиболее сходный идентификатор и есть искомый объект. Если сходство с этим идентификатором меньше некоторой пороговой величины - считается, что объект не найден.
Краткие рекомендации к использованию
Продукт достаточно ресурсоемок и его включения на контейнерах объемомо более ста элементов не рекомендуется. Кроме того, не рекомендуется использование продукта в папках, с которыми связаны сайт-менеджеры, так как при низких значениях параметра rate, сайт-менеджер может начать пытаться делать неверные системные вызовы.
Вложено:
Short package description Package developed to provide possibility display web pages correctly when URL issued with a few misstakes (changing and missing letters, etc). Package consist from three paths: FuzzyTraverser To turn on fuzzy traverser, interface IFuzzyTraverser must be appointed to container, traversed by this way. FuzzyTraverserProperties The IFuzzyTraverserProperties utility can be added into local site-manager and get enable possibility set fuzzy traverse parameters. Custom parameters followed: On Fuzzy traverser turn on (it worked as ordinal traverser otherwize); Rate Detectiob threshold - this is maximal corruption grade on which name can be determined yet. Use The parameter reserved on future. FuzzyTraverserAnnotation To turn on customize traverser in defferent areas of site tree, you can customize via annotations of traversed containers. Interface IFuzzyTraverserAnnotable ...



