суббота, 3 апреля 2010 г.

Разные плюшки поиска от Google

Я довольно регулярно пользуюсь ограничением по времени в поиске Google - его можно установить в расширенном поиске и означает он ограничение по времени первой индексации документа. Но для установки такого ограничения можно обойтись и без расширенного поиска.

В поиске есть специальный параметр "daterange" - указывать его надо в виде daterange:<начальная дата ограничения>-<конечная дата ограничения> И всё было бы просто замечательно, если бы не формат, в котором надо указывать дату. Этим форматом является юлианский день. Кроме того, что надо помнить текущее число дней, прошедших от 1 января 4713 до н. э., этот день еще и начинается около нашего полудня. То есть заботиться приходится еще и о том, вошли ли нужные 12 часов в запрос, или не вошли? Ну и пример. Такая поисковая строка ограничивает результаты поиска страницами, впервые проиндексированными, с 12 дня 2 апреля 2010 года до 12 дня 3 япреля 2010 года: первый ядерный взрыв daterange:2455289-2455290 (я, правда, несовсем понимаю, в каком это всё часовом поясе - вообще юлианский день начинается в 12 дня по Александии, где UTC+2, а летом UTC+3).

Но кроме этого есть еще и возможность ограничивать поиск по дате специальным параметром, который передается поисковой машине. Этим параметром является "as_qdr". И аргументом у него можно задать ограничение последними сутками или каким-то числом суток, неделей или несколькими неделями, месяцами и годами.

Адекватнее всего это можно использовать при создании собственных поисоквых форм для запросов в Google. Сейчас там вместо кода простой html-формочки дают код виджета, но зарегестрировав свою систему пользовательского поиска вот здесь, можно просто подставить её идентификатор в код, представленный ниже. Здесь "007167175344560344735:nnhrymxvrte" и есть тот самый идентификатор. Найти его можно в панеле управления системой пользовательского поиска или взять прямо из ядреса этой системы.

Кроме того здесь добавлен еще и выбор числа результатов поиска, который сделан параметром "num". В этот параметр можно подставлять практически любое целое число. Еще в этом примере паказано, как можно ограничить поиск определенным типом файла. За это отвечает параметр "as_filetype", котоый может принимать много разных значений - причем, в справке я нашел только весьма устаревший перечень из 13 возможных форматов, но реально этот параметр принимает гораздо больше. Самые частовстречающиеся указаны в примере. К сожалению, поиск с ограничением формата файла не принимает (и по всей видимости google их вообще не индексирует) файлы DjVu - про этот формат часто говорят, что в нем можно хранить только изображения с различными алгоритмами сжатия, но не текстовую информацию - так вот, можно. Также не индесируются роботом общего назначения, как выделенные форматы файлов, и исходники. Для их поиска придется пользоваться отдельным инструментом для поиска исходных кодов.

Еще одним интересным параметром поиска, который есть в официальной справке, но который мне так и не удалось заставить работать, является сортировка результатов. Она задается параметром "sort" (что само по себе удивительно), который принимает кроме значения по-умолчанию (пустая строка) только один вариант сортировке - по дате. Но, зато, по тут уже есть где разгуляться. Если вы дочитали досюда, то скорее всего уже можете разобраться из примера кода, какие значения может принимать этот параметр: date:<направление сортировка>:<режим>:<формат даты>. Если с направлением сортировки всё понятно, то режим - это порядок применения сортировки по релевантности - будет она применяться до сортировке по дате и отсекаться всё кроме тысячи самых релевантных результатов или не будет. Кроме того, значением "L", которого нет в примере, можно вообще отключить сортировку по дате - смысл его должен быть в том, что в результатах поиска будет выводиться информация о дате индексации документов.

При помощи параметра "filter" можно управлять выводом дублирующихся результатов. Этот параметр может принимать целых четыре значения. Собственно, фильтрует Google дубли во-первых для всех документов вообще. При этом дублями считаются странички с одинковым заголовком и одинаковым фрагментом, относящимся к поисковому запросу. (Так написано в справке, но у меня есть очень сильное подозрение, что идентичность заголовков для дублей совсем необязательна.) Во-вторых, Google фильтрует вывод похожих страниц с одного сайта, или точнее - из одной директории этого сайта, причем в данном случае - он показывает две похожие страницы и дает еще и ссылку на возможность просмотреть все страницы, включая похожие. Комбинациями включения/выключения этих двух механизмов фильтрации дублей и являются четыре возможных значения параметра "filter". Итак, "0" - фильтрация обоими механизмами, "1" - оба механизма фильтрации выключены, "s" - фильтрация только похожих страниц в рамках одного сайта, "p" - фильтрация только дублей "вообще". В форме в примере есть только варианты для первых двух значений параметра.

В принципе, можно брать и использовать прямо этот код, если вам нужен поиск по всему интернету, а не ограниченный каким-то сайтом. Единственным отличием вывода этого поиска от обычного поиска является увеличенный вес моего блога - все остальные сайты выводятся без измнений.

<form id="cse-search-box" action="http://www.google.com/cse">
<div>
 <input value="007167175344560344735:nnhrymxvrte" name="cx" type="hidden"/>
 <input value="UTF-8" name="ie" type="hidden"/>
 <input name="q" size="200" type="text"/>
 <input value="Найдись!" name="sa" type="submit"/>
 <select name="as_qdr">
  <option value="all"/>Без учета времени
  <option value="d"/>За последние 24 часа
  <option value="w"/>За неделю
  <option value="w2"/>За 2 недели
  <option value="m"/>За месяц
  <option value="m2"/>За 2 месяца
  <option value="m6"/>За 6 месяцев
  <option value="y"/>За год
  <option value="y2"/>За 2 года
  <option value="y5"/>За 5 лет
  <option value="y10"/>За 10 лет
 </select>
 <select name="num">
  <option value="10"/> 10 результатов
  <option value="20"/> 20 результатов
  <option value="30"/> 30 результатов
  <option value="50"/> 50 результатов
  <option value="100"/> 100 результатов
 </select>
 <select name="as_filetype">
  <option value=""/> Все типы файлов
  <option value="pdf"/> Документы в Portable Document Format
  <option value="doc"/> Документы Microsoft Word
  <option value="docx"/> Документы Microsoft Word (новый формат)
  <option value="odt"/> Документы Open Document Format
  <option value="rtf"/> Документы в Rich Text Format
  <option value="xls"/> Электронные таблицы Microsoft Excel
  <option value="xlsx"/> Электронные таблицы Microsoft Excel (новый формат)
  <option value="ods"/> Электронные таблицы Open Document Format
  <option value="ppt"/> Перезентации Microsoft PowerPoint
  <option value="pptx"/> Перезентации Microsoft PowerPoint (новый формат)
  <option value="odp"/> Презентации Open Document Format
  <option value="txt"/> Текстовые файлы
 </select>
 Сортировать результаты поиска:
 <select name="sort">
  <option value=""/> По релевантности
  <option value="date:D:S:d1"/> По убыванию даты тысячи самых релевантных результатов
  <option value="date:A:S:d1"/> По возрастанию даты тысячи самых релевантных результатов
  <option value="date:D:R:d1"/> По убыванию даты всех результатов
  <option value="date:A:R:d1"/> По возрастанию даты всех результатов
 </select>
 <input type="radio" name="filter" value="1">Исключить похожие страницы<input type="radio" name="filter" value="0">Не исключать похожие
</div>
</form>
<script src="http://www.google.com/coop/cse/brand?form=cse-search-box&lang=ru" type="text/javascript"></script>


* This source code was highlighted with Source Code Highlighter.


Выглядит форма из примера вот так:

1 комментарий:

  1. Привет.

    После запуска поиска (т.е. после того, как я набрал слово, настроил фильтр и клацнул условный "найдись") в дальнейшем окне либо исчезает возможность изменения сортировки, либо меняется кодировка и все слова становятся не читабельными, более того в таком состоянии не работает поиск.

    Можно ли это как-то исправить? Проблема заключается в том, что поиск я пробую осуществлять по выбранным сайтам.

    Спасибо.

    ОтветитьУдалить