Дерево страниц
Skip to end of metadata
Go to start of metadata

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 12 Следующий »

Корневой элемент search-area. Пространство имен: <configuration xmlns="https://cm5.intertrust.ru/config">

Краткое описание

Конфигурация описывающая правила маппинга информации из ДОП-ов в индекс Solr

Структура XML
<search-area name="{name}" replace="runtime">     	
	<boost-every-where base="2.0">
        <field-boost name="regFullNumber" value="20.0"/>
        <field-boost name="subject" value="10.0"/>
    </boost-every-where>
	
	<!-- Исполнение -->
	<target-domain-object type="F_DP_Report">

		<!-- Модуль -->
		<indexed-field name="Module">
			<doel>Module</doel>
		</indexed-field>
		
		<!-- Текст отчета -->
		<indexed-field name="reportText" search-by="exactmatch">
			<doel>Text</doel>
		</indexed-field>

		<target-collection name="F_DP_Report_(search)"/>

		<filter>
			<conditions-script>
				<![CDATA[
                    var result = false;
                    var typeName = session.find(ctx.get('HierRoot')).getDomainObject().getTypeName();
                    var qqz=ctx.get('Module.Type.Alias');
                    if (typeName.equals('F_DP_InputRkk') && (qqz.equals('InputDocs') || qqz.equals('InputDocsPrev'))){
                        result=true;
                    }
                    ctx.setResult(result);
                    ]]>
			</conditions-script>
		</filter>
	</target-domain-object>

	<!-- Резолюция -->
	<target-domain-object type="F_DP_Resolution">

		<!-- Модуль -->
		<indexed-field name="Module">
			<doel>Module</doel>
		</indexed-field>

		<target-collection name="F_DP_Resolution_(search)"/>

		<filter>
			<conditions-script>
				<![CDATA[
                    var result = false;
                    var typeName = session.find(ctx.get('HierRoot')).getDomainObject().getTypeName();
                    var qqz=ctx.get('Module.Type.Alias');
                    if (typeName.equals('F_DP_InputRkk') && (qqz.equals('InputDocs') || qqz.equals('InputDocsPrev'))){
                        result=true;
                    }
                    ctx.setResult(result);
                    ]]>
			</conditions-script>
		</filter>
	</target-domain-object>

	<!-- Документ -->
	<target-domain-object type="F_DP_InputRkk">

		<!-- Модуль -->
		<indexed-field name="Module">
			<doel>Module</doel>
		</indexed-field>

		<!-- Получение нр-поля -->
		<linked-domain-object type="Tn_Field_String" nested="true">
			<indexed-field name="initBranch">
				<doel>value:split("%"):getString("0")</doel>
				<filter>
					<doel>cmjfield:in("initBranch")</doel>
				</filter>
			</indexed-field>
			<parent-link>
				<doel>Owner</doel>
			</parent-link>
		</linked-domain-object>
		
		<!--Содержание-->
		<indexed-content type="F_ContentRichText_Rkk"/>
		<indexed-content type="F_ContentFiles_Rkk"/>
		<indexed-content type="F_AddFiles_Rkk"/>

		<!-- Регистратор -->
		<indexed-field name="Registrator" search-by="substring" >
			<doel>RegRegistrator.orig_shortname</doel>
		</indexed-field>

		<!-- Место регистрации -->
		<indexed-field name="Registration" search-by="substring" >
			<doel>RegCode.orig_shortname</doel>
		</indexed-field>

		<!-- Дата документа -->
		<indexed-field name="rdate">
			<doel>RegDate</doel>
		</indexed-field>
		
		<!-- Адресат -->
		<linked-domain-object type="F_DP_InputRkk_Addressee">
			<indexed-field name="To" search-by="substring" >
				<doel>Addressee.orig_shortname</doel>
			</indexed-field>
			<parent-link>
				<doel>Owner</doel>
			</parent-link>
		</linked-domain-object>
		
		<!-- Дело -->
		<linked-domain-object type="FD_Rkk_BelongToFile">
			<!-- Заголовок дела -->
			<indexed-field name="fdDocName" search-by="substring" >
				<doel>Card.title</doel>
			</indexed-field>
			<indexed-field name="fdNumber" search-by="substring" >
				<script>
					var card = session.find(ctx.get('Card'));
					var cardCode = card.get('code');
					var cardNumber = card.get('number');
					if(cardCode != null){
					var codeNum = cardCode+'-'+cardNumber;
					ctx.setResult(codeNum);
					} else {
					var codeNum = cardNumber;
					ctx.setResult(codeNum);
					}
				</script>
			</indexed-field>
			<parent-link>
				<doel>Owner</doel>
			</parent-link>
		</linked-domain-object>

		<!-- Особая отметка -->
		<linked-domain-object type="F_DP_RkkWORegAndCtrl_SMrk">
			<indexed-field name="specMark" search-by="substring">
				<doel>specmark</doel>
			</indexed-field>
			<parent-link>
				<doel>Owner</doel>
			</parent-link>
		</linked-domain-object>

		<target-collection name="InputDocs_(search)" />

		<filter>
			<doel>Module.Type.Alias:in("InputDocs", "InputDocsPrev")</doel>
		</filter>
	</target-domain-object>
</search-area>

attributes

ПараметрыОписание

name

Имя области поиска

replace

Возможность заменять область поиска поставляемую вместе с сервером CMJ.

Варианты:

  • runtime - разрешено обновлять
  • none - не разрешено обновлять

solr-server-url

Имя сервера Solr

target-filter-name

Имя фильтра который используется для проверки вхождения id найденных документов в определенную SQL коллекцию. Коллекция задаётся в файле поиска.

content-search-by

Модификатор, определяющий, как организован полный поиск. Варианты:

  • word - поиск идет по вхождению каждого отдельного слова, с применением морфологии
  • substring - поиск идет по вхождению выражения целиком без применения морфологии
  • wildcard - поиск с учётом " и *

target-domain-object

Описание правил индексации в рамках ДОП-а (таблица в БД SQL)

ПараметрыОписание

type

Тип ДОП-а (имя таблицы)

filter

Настройка агрегатор определяющая, какие ДОП-ы должны быть включены в индекс, если отсутствует, то включаются все ДОП-ы

ПараметрыОписание
op

Способ совмещения вложенных условий. 

Варианты: AND\OR.

По умолчанию: OR

class-name

Имя класса выполняющего проверку, подходит ли ДОП под фильтр

search-query

SQL выражение для фильтрации, в него подставляется id обрабатываемого документа

conditions-script

JS-скрипт, внутри которого проверяется, подходит ли ДОП под условие

doel

Doel проверяющий, подходит ли ДОП под условие

filter

Вложенный фильтр, на случай, если нужна комбинация И и ИЛИ

indexed-field    

Описание индексируемого поля из текущего ДОП-а

ПараметрыОписание
name
Имя индекса Solr
language
Список локализаций, которые необходимо добавить в индекс, указывается через ;
solr-prefix
Префикс к имени индекса в Solr
show-in-results
Добавлять ли поле, полученное от solr в результаты запроса возвращаемые платформой
multi-valued
Поле с множественным значением 
target-field-name
Поле, на которое отображается в результат поле, при включенной show-in-results
index-boost-value
Бусты для индексированного содержания, в 8 версии solr не поддерживается, рекомендуется использовать boost-every-where.content
search-by

Модификатор строки при поиске. Влияет на доступность wildcard и подход к формированию строки.

Варианты:

  • wildcard- поиск идет по вхождению каждого отдельного слова, с применением морфологии, поддерживает " и *.
  • substring - поиск идет по вхождению выражения целиком без применения морфологии, поддерживает *
  • exactmatch - поиск по точному совпадению, поддерживает *. Требует переиндексацию при изменении

Переключение между режимами wildcard/substring не требует переиндексации

include-everywhere
Включать ли строковое значение в полный поиск
filter
Настройка фильтрации индексации данного поля, позволяет описать условия фильтрации для необходимости индексации поля
compound-field

Элемент, позволяющий собрать информацию из нескольких ОДОП, в одно nested поле

ПараметрыОписание
order-script
JS-скрипт, описывающий алгоритм сортировки внутри строки
field-part
Описание получения части комплексного индекса, либо DoEL-выражение, либо JavaScript
delimiter
Элемент, позволяющий собрать информацию из нескольких ОДОП, в одно nested поле
doel

DoEL-выражение для получения из таблицы информации для индексации

script

JS-скрипт, описывающий алгоритм получения индексируемой информации

ПараметрыОписание
script
JS-скрипт
return-type
Возвращаемый скриптом тип данных

Если не указаны Doel-выражение и скрипт, то берётся поле из ДОПа, имя которого совпадает с именем индекса.


indexed-content    

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

ПараметрыОписание
type
Имя ДОПа индексируемого содержания
parent-fk-field
Имя поля, которое содержит ссылку на КДОП, необходимо для индексирования содержания вместе с КДОП
index-boost-value
Бусты для индексированного содержания, в 8 версии solr не поддерживается, рекомендуется использовать boost-every-where.content
content-field

Описание служебных полей, которые необходимо дополнительно проиндексировать

filter

Настройка фильтрации индексации данного поля, позволяет описать условия фильтрации для необходимости индексации поля

linked-domain-object

Описание связанного ОДОП-а, поля из которого необходимо добавить в индекс

ПараметрыОписание
reindex-on-parent

Производить ли переиндексацию ОДОП-а при пересохранении КДОП.

Варианты:

  • never - никогда
  • create - при создании КДОП
  • change - при изменении КДОП
nested
Включать ли поля ОДОП в корневой Solr документ. Обязательно при индексировании полей хранимых на НР

DoEL-выражение, в котором написан алгоритм получения id КДОП

target-collection

Описание индексации КДОП (корневой (обособленный) ДОП)

ПараметрыОписание
name
Название коллекции используемая для постфильтрации данных ДОПа.

highlighting-config

Настройки подсветки результатов при контекстном\умном поиске

ПараметрыОписание

enable

Включено ли выделение для данной области поиска

hl-require-match

Поле без изменений маппится на hl.requireFieldMatch (см. документацию solr). По умолчанию: false

hl-phrase

Поле без изменений маппится на hl.usePhraseHighlighter (см. документацию solr). По умолчанию: false

hl-multiterm

Поле без изменений маппится на hl.highlightMultiTerm (см. документацию solr) . По умолчанию: false

hl-pre-tag

Поле без изменений маппится на hl.pre (см. документацию solr). По умолчанию:  <hl>

hl-post-tag

Поле без изменений маппится на hl.simple.post (см. документацию solr). По умолчанию: </hl>

hl-snippet-count

Поле без изменений маппится на hl.snippets (см. документацию solr). По умолчанию: 5

hl-frag-size

Поле без изменений маппится на hl.fragsize (см. документацию solr). По умолчанию: 30

boost-every-where

Настройка весов полей при полном поиске

ПараметрыОписание

base

Базовый вес всех полей, кроме содержания

content

Базовый вес содержимого содержания

field-boost

Перечисление полей с особым весом, который может быть только больше базового

ПараметрыОписание
name
Имя индекса, к которому применяется буст
value
Буст для индекса
Статус

В РАБОТЕ

Комментарийhttps://conf.inttrust.ru:8443/pages/viewpage.action?pageId=185336550

Теги и атрибуты:

  • Нет меток