Skip to content

Instantly share code, notes, and snippets.

@LeshaInc

LeshaInc/help.md Secret

Last active March 27, 2020 14:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LeshaInc/df2e6c9f8408e11e8a1cc5a7425fe638 to your computer and use it in GitHub Desktop.
Save LeshaInc/df2e6c9f8408e11e8a1cc5a7425fe638 to your computer and use it in GitHub Desktop.
hubblest help

Содержание

  1. Формат запроса
    1. Синтаксис
    2. Операторы
    3. Фразы
    4. Функции
  2. Команды IRC-бота
    1. :search
    2. :top
    3. :count
    4. :import-logs
  3. Список стоп-слов

Формат запроса

Любой поисковый запрос состоит из фраз, функций и спецсимволов, разделенных пробельными символами.

Пробельные символы определены Unicode-категориями Ps, Pe, Pi, Pf, Po — пунктуация (за исключением дефисных и соединительных символов в сложных словах), и категориями Zs, Zl, Zp — разделительные символы. При этом, пробельный символ не может быть одним из спецсимволов: ( и ), " и ', :. Пример: запрос Мне как-то всё равно, как я выгляжу в ваших глазах. будет разбит на части: Мне, как-то, всё, равно, как, я, выгляжу, в, ваших, глазах; а запрос яблоко OR помидор sort:time — на яблоко, OR, помидор, sort:time.

Синтаксис

После разбиения запрос трактуется как древовидное математическое выражение, элементами которого являются фразы и функции, а действиями (операторами) — ключевые слова NOT, OR, AND, THEN, а также пробел — неявное и. В качестве элемента может выступать и подвыражение, заключенное в круглые скобки.

Операторы

Порядок выполнения действий (от самого сильного оператора к самому слабому): OR, AND, THEN, неявное и. Пример: запрос куплю машину OR мопед эквивалентен запросу куплю (машину OR мопед).

  • NOT - логическое отрицание. Запрос вида NOT a выдаст результаты, не соответствующие запросу a.
  • OR — логическое ИЛИ. Запрос вида a OR b выдаст результаты объединения отдельных запросов a и b.
  • AND — логическое И. Запрос вида a AND b выдаст результаты пересечения отдельных запросов a и b.
  • THEN — оператор последовательности слов. Запрос вида a THEN b выдаст те же результаты, что и a AND b, однако релевантность сообщений в ответе будет высчитываться исходя из близости a и b в сообщении и их порядка. Операнды могут включать только фразы и их комбинации, но не могут содержать функции!
  • Неявное и. Эквивалентно оператору AND, но имеет меньший приоритет.

Фразы

Фразы могут быть как отдельными словами (например яблоко), так и сочетаниями слов, заключенных в двойные или одинарные кавычки (например "люблю яблоки") Кавычки внутри фраз можно экранировать обратной косой чертой (например "он сказал \"поехали\" и махнул рукой") .

Фразы, представленные одиночными словами, которые присутствуют в списке стоп-слов удаляются из запроса, в отличие стоп-слов, которые являются частью многосложных фраз в кавычках.

Фразы в кавычках особенно полезны при поиске точных предложений, т. к. семантически запрос "a b" эквивалентен запросу a THEN b (если a и b не являются стоп-словами), а запрос a b — запросу a AND b, который не учитывает порядок слов в сообщении.

Функции

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

Многие функции существуют в двух вариантах — $func и i$func, где последний — регистронезависимый.

  • regex:X и iregex:X — регулярные выражения, определенные стандартом POSIX 1003.2. Дабы избежать ошибок рекомендуется всегда использовать кавычки!
  • contains:X и icontains:X — отбирают сообщения, которые содержат подстроку X.
  • like:X и ilike:X — выражения LIKE и ILIKE из стандарта SQL.
  • similarto:X — регулярные выражения SIMILAR TO из стандарта SQL.
  • author:X — отбирает сообщения, написанные пользователем с ником X или с ником, который закреплен за X как псевдоним.
  • rawauthor:X — отбирает сообщения, написанные пользователем с ником X, точь-в-точь.
  • sort:time и sort:relevance — выбор режима сортировки, по времени или по релевантности (по умолчанию).
  • order:asc и order:desc — выбор порядка сортировки, по убыванию или по возрастанию (по умолчанию).
  • date:"[OP]<date>" — дата отправки сообщения. OP может быть одним из = (по умолчанию), !=, <, >, <=, >=. date имеет формат yyyy-mm-dd.
  • time:"[OP]<time>" — время отправки сообщения. time имеет формат hh:mm:ss.
  • datetime:"[OP]<datetime>" — дата и время отправки сообщения. datetime имеет формат yyyy-mm-dd hh:mm:ss.
  • length:"[OP]<length>" — длина сообщения. OP работает так же, как в функции date и ей подобных.

Команды IRC-бота

Команды ^search, ^top, ^count принимают на вход поисковый запрос, как описано в п. 1.

^search ­— поиск сообщений в истории

<LeshaInc> :search заходите в ирку
<hubblest> https://da.gd/I3hO  Totoro │ если в ирку не охото заходить - не заходи
<hubblest> https://da.gd/r6bV   Asior │ пару раз в ирку заходил
<hubblest> https://da.gd/lTzm Fiender │ пусть в ирку заходит
<hubblest>  ... https://clbin.com/Vhs7J

^top ­— пользователи по наибольшему количеству совпадений

<LeshaInc> :top блин
<hubblest> 1. 1987 bpm140            │ Total users:
<hubblest> 2. 1076 LeshaInc          │   143
<hubblest> 3.  712 fingercomp        │ Total users (w/o aliases):
<hubblest> 4.  502 Totoro            │   145
<hubblest> 5.  277 jvekstrem-extrem  │ Total messages:
<hubblest> 6.  219 BrightYC          │   5857

Total users — количество пользователей, которых затронул поисковый запрос. Total users (w/o aliases) — количество ников, которых затронул поисковый запрос — больше или равен первому числу. Total messages — суммарное количество сообщений, удовлетворяющих запрос.

^count — количество результатов поиска

<LeshaInc> ^count блин
<hubblest> Messages:     5857, Users:  143, Users (w/o aliases):  145

Числа соответствуют выдаче команды ^top, но без списка пользователей и в одну строку.

^import-logs — обновление базы данных сообщений

<LeshaInc> ^import-logs
<hubblest> Logs imported in 869.96127ms (217 new lines)

Если база данных пуста, первым аргументом следует указать день первого сообщения:

<LeshaInc> ^import-logs 2016-11-21
<hubblest> Logs imported in 770.261784292s (2493285 new lines)

Список стоп-слов

(на состояние 2020-01-04, может измениться)

и, в, во, не, что, он, на, я, с, со, как, а, то, все, она, так, его, но, да, ты, к, у, же, вы, за, бы, по, только, ее, мне, было, вот, от, меня, еще, нет, о, из, ему, теперь, когда, даже, ну, вдруг, ли, если, уже, или, ни, быть, был, него, до, вас, нибудь, опять, уж, вам, ведь, там, потом, себя, ничего, ей, может, они, тут, где, есть, надо, ней, для, мы, тебя, их, чем, была, сам, чтоб, без, будто, чего, раз, тоже, себе, под, будет, ж, тогда, кто, этот, того, потому, этого, какой, совсем, ним, здесь, этом, один, почти, мой, тем, чтобы, нее, сейчас, были, куда, зачем, всех, никогда, можно, при, наконец, два, об, другой, хоть, после, над, больше, тот, через, эти, нас, про, всего, них, какая, много, разве, три, эту, моя, впрочем, хорошо, свою, этой, перед, иногда, лучше, чуть, том, нельзя, такой, им, более, всегда, конечно, всю, между
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment