I found an undocumented function: udm_set_agent_param_ex
For example, if you want to sort results by date, do this:
udm_set_agent_param_ex($udm_agent, 's', 'DR');
See http://www.mnogosearch.org/doc/msearch-doingsearch.html for details
(PHP 4 >= 4.0.5, PHP 5 < 5.1.0, PECL mnogosearch >= 1.0.0)
udm_set_agent_param — Установить параметры сессии mnoGoSearch
$agent
, int $var
, string $val
) : boolУстанавливает параметры сессии mnoGoSearch.
agent
Идентификатор ресурса агента, полученный из udm_alloc_agent().
var
Доступные параметры и их значения:
UDM_PARAM_PAGE_NUM
- используется для выбора номера
страницы в результатах поиска (результат возвращается начиная с индекса
0 с UDM_PARAM_PAGE_SIZE
результатами на страницу).
UDM_PARAM_PAGE_SIZE
- количество результатов на одной странице.
UDM_PARAM_SEARCH_MODE
- режим поиска. Допустимы такие значения: UDM_MODE_ALL
-
поиск всех слов; UDM_MODE_ANY
- поиск любого слова; UDM_MODE_PHRASE
-
поиск фразы; UDM_MODE_BOOL
- поиск по логическому выражению. Более подробно читайте в описани udm_find().
UDM_PARAM_CACHE_MODE
- включает или отключает кеширование результатов поиска.
Если включено, то поисковая машина будет сохранять результаты поиска на диск и,
если поступит аналогичный запрос, то будет возвращен кешированный результат.
Допустимые значения: UDM_CACHE_ENABLED
,
UDM_CACHE_DISABLED
.
UDM_PARAM_TRACK_MODE
- включает или выключает поддержку trackquery.
С версии 3.1.2 mnoGoSearch имеет поддержку отслеживания запроса.
Обратите внимание, что отслеживание реализовано только в версии для SQL, но
не для встроенной базы данных.
Для использования отслеживания вам понадобится создать дополнительные таблицы.
Для MySQL используйте create/mysql/track.txt.
Во время поиска фронтенд будет использовать эти таблицы для хранения
слов запроса, количество найденых документов и текущий временную метку Unix.
Допустимые значения: UDM_TRACK_ENABLED
,
UDM_TRACK_DISABLED
.
UDM_PARAM_PHRASE_MODE
- определяет, использовать ли фразы для индексирования
(параметр "phrase" в indexer.conf).
Допустимые значения: UDM_PHRASE_ENABLED
и UDM_PHRASE_DISABLED
.
Обратите внимание, что если разрешен поиск по фразам (UDM_PHRASE_ENABLED
),
то поиск в любом режиме остается доступен (ANY
, ALL
,
BOOL
или PHRASE
).
В версии 3.1.10 поиск по фразам доступен только для SQL и встроенной базы данных.
Начиная с версии 3.1.11 фразы доступны и в режиме кеширования.
Пример поиска фраз:
"Arizona desert"
- этот запрос вернет все документы, содержащие
"Arizona desert" в виде точной фразы. Обратите внимание, что фразу нужно
обрамить двойными кавычками.
UDM_PARAM_CHARSET
- определяет локальную кодировку. Допустимые значения: набор кодировок, поддерживаемых mnoGoSearch, например koi8-r, cp1251, ...
UDM_PARAM_STOPFILE
- определяет путь до файла
со стоп-словами. (Есть небольшой нюанс. В mnoGoSearch, если задан относительный путь, или путь вообще не задан, то
поиск файла будет идти от UDM_CONF_DIR
, но в модуле будет
использован путь относительно текущей директории, т.е. той, где запущен скрипт PHP.)
UDM_PARAM_STOPTABLE
- Загружать стоп-слова из заданной таблицы в БД. Вы можете использовать несколько команд StopwordTable.
Эта команда не будет работать, если mnoGoSearch собран без поддержки SQL.
UDM_PARAM_WEIGHT_FACTOR
- представляет весовые факторы для определенных частей документа.
Сейчас поддерживаются такие части: body, title, keywords, description, url.
Для активации этого функционала используйте степени числа 2 в командах
*Weight файла indexer.conf. Представим, что у нас есть такие веса:
URLWeight 1 BodyWeight 2 TitleWeight 4 KeywordWeight 8 DescWeight 16Так как индексатор использует побитовое ИЛИ для развесовки когда слово присутствует в разных частях документа, то становится возможным отследить наличие этого слова в разных частях документа. Слово, присутствующее только в теле будет иметь вес 00000010, слово, присутствующее во всех частях документа - 00011111. Значение этого параметра является строкой шестнадцатеричных цифр
ABCDE
. Каждая цифра - фактор для соответствующего бита
в весах слов. Для заданной выше конфигурации весов:
E фактор для веса 1 (URLWeight bit) D фактор для веса 2 (BodyWeight bit) C фактор для веса 4 (TitleWeight bit) B фактор для веса 8 (KeywordWeight bit) A фактор для веса 16 (DescWeight bit)Примеры:
UDM_PARAM_WEIGHT_FACTOR
=00001 будет искать только в URL.
UDM_PARAM_WEIGHT_FACTOR
=00100 будет искать только в Titles.
UDM_PARAM_WEIGHT_FACTOR
=11100 будет искать в Title, Keywords и Description, но не в URL и Body.
UDM_PARAM_WEIGHT_FACTOR
=F9421 будет искать:
Description с фактором 15 (F hex) Keywords с фактором 9 Title с фактором 4 Body с фактором 2 URL с фактором 1Если переменная
UDM_PARAM_WEIGHT_FACTOR
опущена,
то будут взяты оригинальные веса. Для примера выше это значит, что
наибольший вес будет у description с весом 16.
UDM_PARAM_WORD_MATCH
- совпадение слов. Вы можете
использовать этот параметр для выбора типа сравнения слов.
Этот функционал работает только для режимов "single" и "multi" при использовании
SQL и встроенной баз данных. Не работает в режиме кеширования и прочих режимах,
так как в них используются контрольные суммы слов и не работает поиск
по подстроке. Допустимые значения:
UDM_MATCH_BEGIN
- сравнение слов по их началу;
UDM_MATCH_END
- сравнение слов по их окончанию;
UDM_MATCH_WORD
- полное совпадение;
UDM_MATCH_SUBSTR
- сравнение как с подстрокой.
UDM_PARAM_MIN_WORD_LEN
- задает минимальную длину слов.
Любое слово, короче заданного размера, будет считаться стоп-словом.
Обратите внимание, что стоп-словами будут считаться слова строго меньше
заданного значения. Например при UDM_PARAM_MIN_WORD_LEN
=3,
слова из трех букв не будут считаться стоп-словами. Значение по умолчанию 1.
UDM_PARAM_ISPELL_PREFIXES
- Допустимые значения: UDM_PREFIXES_ENABLED
и
UDM_PREFIXES_DISABLED
, что, соответственно, разрешает
или запрещает использование префиксов.
Т.е. если в поисковом запросе присутствует слово "tested", то также будут найдены
"test", "testing" и т.д. По умолчанию поддерживаются только суффиксы. Префиксы же
обычно меняют значение слов. К примеру если кто-то ищет слово "tested" и, при этом,
очень хочет, чтобы также было найдено и "untested". Поддержка префиксов может
быть полезна проверки орфографии. Для включения поддержки
ispell вам придется загрузить его данные с помощью udm_load_ispell_data().
UDM_PARAM_CROSS_WORDS
- включение или отключение поддержки функционала вставки слов.
Допустимые значения: UDM_CROSS_WORDS_ENABLED
и UDM_CROSS_WORDS_DISABLED
.
Данный функционал позволяет вставлять слова между <a href="xxx"> и </a>
в ссылках на документ. Работает в режиме SQL, но не в режимах
внутренней БД или кеширования.
UDM_PARAM_VARDIR
- задает путь к директории, где
индексатор будет хранить данные с использованием встроенной БД или
в режиме кеширования.
По умолчанию используется директория /var
сервера
установки mnoGoSearch.
val
Версия | Описание |
---|---|
4.1.0 |
Добавлена константа UDM_PARAM_VARDIR .
|
Возвращает TRUE
в случае успешного завершения или FALSE
в случае возникновения ошибки.
Замечание: Вставка слов поддерживается в mnoGoSearch 3.1.11 или выше.
I found an undocumented function: udm_set_agent_param_ex
For example, if you want to sort results by date, do this:
udm_set_agent_param_ex($udm_agent, 's', 'DR');
See http://www.mnogosearch.org/doc/msearch-doingsearch.html for details
One useful parameter not documented above is UDM_PARAM_SYNONYM. If you understand how this API works in general, you should be able to figure it out, but here goes anyway:
<?php
/* Make sure that PHP is able to find the file. Unlike mnogosearch's indexer and search.cgi, it doesn't know the directory of the installation. */
$synFile="/usr/local/mnogosearch/etc/synonym/english.syn";
udm_set_agent_param($agent, UDM_PARAM_SYNONYM, $synFile);
?>
Piece of cake.
For more about mnogosearch's handling of synonyms see http://www.mnogosearch.org/doc/msearch-fuzzy.html#synonyms
Other possible session parameters not documented but found in the default php frontend on http://www.mnogosearch.org:
UDM_PARAM_BROWSER_CHARSET - ?
UDM_PARAM_HLBEG - defines the tag to use before an highlighted search term
UDM_PARAM_HLBEG - defines the tag to use after an highlighted search term
UDM_PARAM_QSTRING - defines the search term (or query string)
UDM_PARAM_REMOTE_ADDR - ?
UDM_PARAM_QUERY - ?
UDM_PARAM_STORED - ?
UDM_PARAM_GROUPBYSITE - toggles the "group by site" feature (UDM_ENABLED or UDM_DISABLED)
UDM_PARAM_SITEID - ?
UDM_PARAM_DETECT_CLONES - enable the "detect clone" feature (UDM_ENABLED or UDM_DISABLED)