Версия для печати

-   Форум Сообщества Практиков Конкурентной разведки (СПКР) http://forum.razved.info/
--  Программируем пакеты СайтСпутника (для продвинутых юзеров) http://forum.razved.info//index.php?f=39
--- Отключение пустого параметра http://forum.razved.info//index.php?t=951




-- Игорь Нежданов написал 22 мая 2010 10:13
Коллеги, возможно кто то уже сталкивался, но мне на глаза не попалось решение вот какого вопроса. Предположим есть пакет для поиска информации о компании. Помимо прочего в этом пакете заложена возможность искать по "полному названию" , "краткому названию" и по "латинскому названию" (пример упрощен до минимума, а так возможны названия брендов, названия офисов и отделений и т.п. ) Выглядеть пакет (опять же в упрощенном виде) будет примерно так:

^^ <1>= //Название полное
^^ <2>= //Название краткое
^^ <3>= //Название иностранное
^^ <4>= //Бренд 1
^^ <5>= //Бренд 2
^^ <7>=;1;3;7;10;25;50;100;1000 //Глубина поиска
^^==========================================================
("<1>" | "<2>" | "<3>" | "<4>" | "<5>") || Yandex=<7>
("<1>" | "<2>" | "<3>" | "<4>" | "<5>") || Yandex.Блоги=<7>
("<1>" | "<2>" | "<3>" | "<4>" | "<5>") || Yandex.Комм=<7>
("<1>" | "<2>" | "<3>" | "<4>" | "<5>") || Mail=<7>
("<1>" | "<2>" | "<3>" | "<4>" | "<5>") || Rambler=<7>
("<1>" OR "<2>" OR "<3>" OR "<4>" OR "<5>") || Google=<7>
("<1>" OR "<2>" OR "<3>" OR "<4>" OR "<5>") || Google.Блоги=<7>
...

Теперь проблема. Мне известны "Название полное", "Название иностранное" и "Бренд 2". Естественно именно их я и заполняю, а "Название краткое" и "Бренд 1" остаются не заполненными. Но в конструкции запроса посланного поисковику соответствующие символы ("|" и "OR") будут использованы. И сам запрос получится кривоватым. В одном случае это не повлияет, а в другом повлиет сильно на выдачу.

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


-- tungus1973 написал 23 мая 2010 12:38
Возможны несколько вариантов решения. Сразу скажу, что все они - не идеальные.
Возьмем тот же пакет и немного изменим его.

Вариант 1. Разбиение длинного запроса на короткие.

Вместо применения конструкций "|" или "OR" используем:
...
^^ <8>=;^^; //Откл.Пл.Назв.
^^ <9>=;^^; //Откл.Кр.Назв.
^^ <10>=;^^; //Откл.Ин.Назв.
^^ <11>=;^^; //Откл.Бренд1
^^ <12>=;^^; //Откл.Бренд2
...
<8> "<1>" || Yandex=<7>
<9> "<2>" || Yandex=<7>
<10> "<3>" || Yandex=<7>
<11> "<4>" || Yandex=<7>
<12> "<5>" || Yandex=<7>

При необходимости отключить неиспользуемое название в параметрах просто выбираем "^^" и эта строчка выполняться не будет.


Вариант 2. Разбиваем параметры на обязательные и необязательные.

Т.е. выделяем две группы - параметры, которые пользователь должен указать обязательно и параметры, которые пользователь может указывать, а может и не указывать.
...
^^ <8>=^^;; //Не искать доп.параметры
...
"<1>" || Yandex=<7>
"<2>" || Yandex=<7>
<8> "<3>" || Yandex=<7>
"<4>" || Yandex=<7>
<8> "<5>" || Yandex=<7>
...
В данном примере, короткое название компании и Бренд 2 мы сочли доп.параметрами (необязательными). По умолчанию они отключены, пользователь может их включить.


Вариант 3. Делаем отдельные пакеты для поиска по каждому отдельному параметру и собираем мега-пакет через Ассемблеры.

^^======================================
^^ Введите в поле один из параметров:
^^ * Полное название компании
^^ * Краткое название компании
^^ * Название компании латиницей
^^ * Бренд компании
^^======================================
^^ <1>= //Название/Бренд
^^ <2>=;1;3;7;10;25;50;100;1000 //Глубина поиска
^^======================================
"<1>" || Yandex=<2>
"<1>" || Yandex.Блоги=<2>
"<1>" || Yandex.Комм=<2>
"<1>" || Mail=<2>
"<1>" || Rambler=<2>
"<1>" || Google=<2>
"<1>" || Google.Блоги=<2>
^^======================================


-- Игорь Нежданов написал 23 мая 2010 13:27
После раздумий и проб пошел по третьему пути - каждый параметр ищется отдельно. Так по моему получается надежнее.


-- Алексей Мыльников написал 23 мая 2010 21:50
По первому топику из этой темы.

1. Образовывающиеся пустые конструкции СайтСпутник пытается автоматически распознать и удалить из запроса. Поэтому, если где-то такие конструкции будут образовываться (даже не обязательно при подстановке пустого параметра), то присылайте мне на е-майл или на форум, - будем пытаться их автоматически удалять.

2. В СайтСпутнике можно писать и для Yahoo оператор |, он автоматически при обращении к Yahoo будет заменен на OR. Поэтому Вы можете вместо семи запросов в пакете из первого топика написать только один:
("<1>" | "<2>" | "<3>" | "<4>" | "<5>") || Метапоиск=<7>
Положительное: кратко задан запрос.
Замечание: в отличие от пакета из первого топика этот пакет выполняется на поисковиках, которым прописано "Да" в "Настройка поиска", которую Вы можете иногда менять. Пакет из первого топика от "Настройка поиска" не зависит. Он написан раз и навсегда.

3. Можно к подобным пакетам обращаться через Ассемблер. Тогда Вы перед выполнением пакета видите как СайтСпутник сделал замены параметров и можете вживую откорректировать текст на свое усмотрение, убрав пустые операторы или внеся любые свои изменения



-- Игорь Нежданов написал 24 мая 2010 12:06

Alexei Mylnikov написал:
[q]
1. Образовывающиеся пустые конструкции СайтСпутник пытается автоматически распознать и удалить из запроса. Поэтому, если где-то такие конструкции будут образовываться (даже не обязательно при подстановке пустого параметра), то присылайте мне на е-майл или на форум, - будем пытаться их автоматически удалять.
[/q]

Вот это очень хорошо!




Этот форум работает на скрипте Intellect Board
© 2004-2007, 4X_Pro, Объединенный Открытый Проект