- Основная концепция программного продукта BroStarter
- Алгоритм поиска по BroZebra XML Language Pack
- Специальный тэг BroStarter_{Integer}
- Строка с вариантами словосочетаний (для предотвращения дублирования контента)
- Алгоритм поиска по BroZebra XML Language Pack
Основная концепция программного продукта BroStarter
Задумывались ли Вы о персональном менеджере на Вашем интернет-проекте? Что, если бы некая программа-робот давала бы правильные консультации, советовала и объясняла потенциальным клиентам важную суть? При этом система постоянно самостоятельно обучалась в указанном Вами направлении? Что же. Довольно хорошо звучит. Попробуем реализовать.
Все версии программного продукта написаны по единым для BroGroup стандартам и правилам (PHP & JavaScript кода). Данный программный продукт затрагивает ряд соглашений в общем пользовательском соглашении BroLib.
Первоначальная и нынешняя версии (до 0.0.3 включительно) разработаны, непосредственно, только для авторского конструктора BroGroup – BroZebra. Дальнейший план развития функционала программного продукта предусматривает патчи для большинства хороших (по мнению автора) CMS.
Сам по себе функционал BroStarter представляет из себя удобный интерфейс взаимодействия с сервером (JavaScript) и обработчик на уровне сервера (PHP handler). Первоначальная версия программного продукта (версии 0.1 & меньше) создавалась и модернизировалась как модуль, который имеет отношение, непосредственно, только к BroLib, нежели как целостное отдельное API. Первоначальная версия (0.0.1) включала в себя следующий функционал:
- Взаимодействие световых индикаторов во время загрузки (индикатор качества ответа);
- Непосредственное запоминание запросов на уровне URL HASH строки;
- Интуитивное управление поиском и резервирование важных событий на ключевые кнопки, такие как: ESC, Enter, Backspace;
- Вывод четырех наиболее валидных результатов;
- Алгоритм поиска по BroZebra XML Language Pack (взаимодействие с фреймворком BroZebra.lang & BroZebra.cwords).
Алгоритм поиска по XML Language Pack
Алгоритм поиска результатов представляет из себя присвоение каждому из вариантов определенное кол-во процентов релевантности. Таким образом, появляется возможность выбора самого подходящего (релевантного) результата, исходя из начисленных системой процентов. Важно отметить, что если системе удалось найти результат по целостной фразе (регистр не важен), то к релевантному значению соответствующего тэга будет статично прибавлено 50%. Поскольку алгоритм работает с языковым пакетом XML, система начисления процентов учитывает тэг, в котором было обнаружено совпадение:
Тэг, в котором был найден результат | Кол-во процентов релевантности, которые начисляются ответу |
---|---|
MetaTitle | 20% |
MetaDescription | 15% |
MetaKeywords | 10% |
BroStarter_{Integer} | 5% (специальный тэг тонкой настройки индексации) |
При этом система учитывает кол-во совпадений в каждом из XML тэгов, добавляя статичные проценты к релевантности. Ниже приведена таблица:
Кол-во совпадений в XML-тэге | Кол-во процентов релевантности |
---|---|
<= 2 | 2% |
3 | 5% |
>=4 | 10% |
При поиске совпадений система проверит все имеющиеся языковые разделы и будет складывать проценты релевантности тэгов (сохраняя результат, прикрепленным к разделу). Таким образом, каждый выделенный и описанный раздел в BroZebra XML Language Pack, в котором было найдено хотя бы одно совпадение (раздел имеет % релевантности больше 0) будет иметь процент релевантности. Ниже приведен пример:
Для примера создадим небольшой фрагмент XML кода в BroZebra XML Language Pack, описывающий 3 разных обычных страницы. Опишем в нем два раздела (для подробного описания синтаксиса см. соответствующий раздел на странице BroZebra.lang):
Текст запроса | Index страниц & проценты релевантности | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
Хорошо в лесу |
|
|||||||||
В лесу |
|
|||||||||
Гулять |
|
Исходя из приведенной таблицы, можно сделать вывод, что если бы к странице page-1 & page-3 был добавлен специальный тэг BroStarter_{Integer}, то результат бы был совершенно иным.
Специальный тэг BroStarter_{Integer} (для настройки индексации)
Поскольку поисковые запросы могут иметь вид, который может не существовать в используемом языковом пакете (либо может быть выдвинут не релевантный результат), было создано решение, позволяющее найти компромисс. А именно XML тэг BroStaret_{Integer}, который может дать варианту ответа 5% к релевантности. Таким образом, появляется возможность управлять отдельными запросами, создавая запросы, которые могут доминировать над другими обычными запросами, например:
Index тэга | Процент релевантности |
---|---|
MetaTitle | 72% |
MyTag | 52% |
MyTag-2 | 0% |
BroStarter_1 | 57% |
Строка с вариантами словосочетаний (обновление до версии 0.0.2)
В последствии Автор заметил необходимость внедрения некоего функционала, который позволял бы обойти создание дубликатов строк с синонимами слов. В обновлении 0.0.2 был реализован функционал Управление Вариантами Словосочетаний. Это означает, что теперь нет необходимости создавать большое кол-во дубликатов с разными вариантами отдельных слов, достаточно соблюдать некий синтаксис (пример приведен ниже):
Таким образом, можно комбинировать совершенно разные строки (из большого кол-ва вариантов) и при этом не создавать дублей в BroZebra XML Language Pack. Программа сама создаст за Вас все возможные варианты со словами, которые были ей предоставлены.