Новая функция "Фильтрация документов по списку ключевиков"

Тема в разделе "Разное", создана пользователем AidarJan, 1 мар 2011.

  1. AidarJan

    AidarJan New Member Пользователи

    Регистрация:
    25 фев 2011
    Сообщения:
    3
    Основная идея темы -
    Алгоритм работы, нюансы и правила использования функции "Фильтрация документов по списку ключевиков".

    Назначение функции:
    Перебор ключевых фраз из списка на предмет наличия в тексте заданной границы парсинга, при положительном результате парсинг, при отрицательном пропуск.

    Для чего эта функция?
    Лично для меня - для заполнения базы товаров интернет-магазина на основе прайс-листа. Т.е. весь смысл в парсинге только того контента, который интересует.

    Вопросы:

    Как реализован алгоритм проверки ключевых фраз с текстом границы парсинга:
    1) перебор ключевых слов в различной комбинации, при этом пробел используется как оператор AND ?
    2) или используется точное совпадение фразы? Как то:
    Текст границы парсинга 1: "Печка в сборе НР 4300"
    В списке ключевиков есть фраза: "Печка в сборе НР 4300"

    По собственному опыту и наблюдениям:
    Использованы ключи, среди прочих:
    1) Тонер BROTHER HL 2030/2075
    2) Тонер Panasonic KX-FL513 (KX-FA83A)

    К ним найдены соответственно тексты из границ парсинга, среди прочих:
    1) Тонер Brother TN-2075/HL-2030/40/70 (ф,с,150) AQC
    2) Тонер-картридж Panasonic KX-FA83A для KX-FL511, KX-FL611, KX-FL512, KX-FL612, KX-FL513, KX-FL613, KX-FL540, KX-FLM651, KX-FL541, KX-FLM652, KX-FL543, KX-FLM653, KX-FLM662, KX-FLM663, KX-FLM672

    Из этого можно сделать вывод, что ключевая фраза разбивается на целые слова за вычетом дефиса "-", слэша "/" и др. служебных символов.
    Верно ли мое предположение?

    Если да, то м.б. сделать символ "/" как оператор "OR" здесь логика такая:
    "Тонер BROTHER" подходит для моделей 2030 2075 и т.д. любых моделей которые перечислены через "/".

    Т.е. пожелание такое, чтобы пробел " " использовался как "AND", а другие символы как то "/", "," как "OR".
    Это позволит избежать массовых пропусков не совпадающих только по одному или нескольким параметрам границ парсинга, с учетом совпадения большей части ключевой фразы с текстом границы парсинга.

    Например, в указанном примере, при ключе:
    "Тонер BROTHER HL 2030/2075"

    Текст границы парсинга при текущем алгоритме:
    "Тонер Brother TN-2075/HL-2030/40/70 (ф,с,150) AQC"
    Будет спарсен.

    А если текст парсинга будет:
    "Тонер Brother HL-2030/40/70 (ф,с,150) AQC"
    То данный контент не будет спарсен, поскольку второй части ключевой фразы:
    "2075"
    нет в тексте границы парсинга.

    Надеюсь сумел объяснить логику.

    Да и еще, пожелания:
    1) не значимые служебные символы, такие как скобки, кавычки и др м.б. вообще убрать из списка ключевых фраз при запуске алгоритма сверки с текстом границы парсинга. Ну или как это реализовать на входе всего списка, или путем применения специального правила чистки от служебных символов и т.д. (т.е. м.б. кнопочку сделать с полем для ввода символов для очистки).
    Понятно, что эти действия могут быть проделаны и до формирования этого списка штатными средствами и другими приложениями, но все же.
    2) дефис не убирать, а использовать как соединитель двух и более слов, рассматривать слова с дефисом как одно слово. Например, в моем случае
    Ключевая фраза:
    "Тонер Panasonic KX-FL513 (KX-FA83A)"
    Текст границы парсинга:
    "Тонер-картридж Panasonic KX-FA83A для KX-FL511, KX-FL611, KX-FL512, KX-FL612, KX-FL513, KX-FL613, KX-FL540, KX-FLM651, KX-FL541, KX-FLM652, KX-FL543, KX-FLM653, KX-FLM662, KX-FLM663, KX-FLM672"

    На первом этапе проверяется: присутствует ли слово "тонер" - да присутствует - идем дальше - проверяем остальные слова - все присутствуют.
    Текст границы парсинга будет спарсен.

    Однако, "тонер" и "тонер-картридж" разные вещи, отсюда неверная интерпретация.

    Поэтому в подобных случаях дефис "-" просто необходим.

    P.S. Да, и еще мысль пришла, пока дописывал, возможно, вообще стоит предусмотреть настройку списка ключевых фраз по определенным правилам чистки, используемых операторов и т.п.

    С уважением.
     
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.494
    Город:
    Барнаул
    Как реализован алгоритм проверки ключевых фраз с текстом границы парсинга:
    1) перебор ключевых слов в различной комбинации, при этом пробел используется как оператор AND;

    Из этого можно сделать вывод, что ключевая фраза разбивается на целые слова за вычетом дефиса "-", слэша "/" и др. служебных символов.
    Верно ли мое предположение? - ДА

    Спасибо за предложение.
     
  3. FANTiK123

    FANTiK123 New Member Пользователи

    Регистрация:
    2 окт 2010
    Сообщения:
    38
    Объясните как эта функция работает,потыкался ничего не отфильтровывает она.
    Что мне надо. Есть поставщик товара, на его сайте всегда актуальная информация по остаткам, я парсю его остатки и PHP скрипт сравнивая артикул в моей базе и его пишет точные остатки в мою БД. В наличии у меня есть товар, которого иногда не бывает в остатках у поставщика. Как мне отсортировать эти товары которые есть в наличии с помощью функции "Фильтрация документов по списку ключевиков", чтоб в БД не писалось, что их нет.
     
  4. FANTiK123

    FANTiK123 New Member Пользователи

    Регистрация:
    2 окт 2010
    Сообщения:
    38
    Что где менять, не пойму ((
    Первая граница парсинга у меня Это Артикул, вторая это остатки уже парсятся.
     

    Вложения:

  5. FANTiK123

    FANTiK123 New Member Пользователи

    Регистрация:
    2 окт 2010
    Сообщения:
    38
    Ввожу артикул который не надо обновлять, нажимаю на предосмотр результата, пишет "Включена функция фильтрации документов по списку ключевиков. Эта страница отфильтрована (фильтр 1)!"
     
  6. nikolas1612

    nikolas1612 Member Пользователи

    Регистрация:
    27 ноя 2011
    Сообщения:
    439
    однозначно поддерживаю. уже обращался к автору с очень похожей просьбой: как вариант - пробел как часть выражения обозначить служебным выражением {space} (по аналогии с {sep} и т.д.).

    P.S. вообще-то в идеале надо ввести в поле ключевиков поддержку регулярок. после этого фильтрация по ключевикам станет такой же мощной функцией, как и поиск-замена

    если эта проблема относится к скриншоту выложенному в предыдущем посте - то все логично. вы ввели выражение для фильтра. внизу - опция "документ будет отфильтрован". ну и все. вот вы его и не видите, если в нем есть этот артикул. в предпросмотре пусто - ведь документ не загрузится, он отсеян вашим же фильтром. в чем проблема?

    P.P.S. функция фильтрации по ключевикам пока что довольно скудненькая. но у программы имеется другой, обходной способ обеспечить комплексный фильтр текста на высшем уровне. помогает та же функция поиска-замены, в которой применимы не только составные выражения но и регулярки.
    1. в окошке "поиск-замена для основного кода" добавляете к искомому выражению (любой сложности!!!) служебный тег - к примеру
    re:panasonic.KX.FL\d\d\d|<111111>$&
    2. в дальнейшем в окошке фильтрации фильтруете документы уже по наличию/отсутствию этого тега. так у вас появляется возможность отсеять все документы в которых не просто Panasonic KX-FL513, а все Панасоники KX-FL с 3-хзначным цифровым кодом и т.д. и т.п.
    Механизм фильтрации очень мощный, и работает безотказно. Возможно, он поможет решить Ваши проблемы.
     
    Последнее редактирование: 11 фев 2013
  7. FANTiK123

    FANTiK123 New Member Пользователи

    Регистрация:
    2 окт 2010
    Сообщения:
    38
    [/QUOTE]
    Спасибо, попробую сегодня зашаманить это )
     
  8. FANTiK123

    FANTiK123 New Member Пользователи

    Регистрация:
    2 окт 2010
    Сообщения:
    38
    Дополнительные настройки границ парсинга -> "Функция поиска и замены" вот туда вписал все артиклы которые не надо "трогать"(обновлять) и все получилось.
     

Поделиться этой страницей