2007-11-15

Zope3 продукты ng.ftp ng.lib

ng.fuzzytraverser

Андрей Орлов  2007-11-15 17:50

FuzzyTraverser - это специальный компонент, который позволяет правильно отобразить страницы сайта даже при не совсем точно набранном 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, сайт-менеджер может начать пытаться делать неверные системные вызовы.

Вложено:

ng.fuzzytraverser README.txt 2007-11-15 18:00  

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 ...

Эпицентр Zope3 Учат тут Нейросети Репозиторий Статистика Редакторам Проекты
Подписаться на RSS Feed Официальный сайт Zope3 Московская группа изучения реактивного движения The Dream Bot Site noooxml