Конфигурация Apache Solr™
Практика по информационному поиску
Опрос
-
Все ли принесли ноутбуки?
-
Кто поставил себе Solr?
-
Кто перепрошел getting started?
-
Кто заглядывал дальше?
План:
- Solr Administration UI
- schema.xml
- Архитектура Solr
- Разбор компонентов
- Вариации запросов
Solr Administration UI
- Посмотреть самим: http://bit.ly/solr-admin-gui
- Не разбираем потому что:
- Скучно
- Слишком легко
- Часто меняется
Как Solr видит мир
- Базовая единица - документ (document)
- Документ содержит поля (fields)
- Имена полей определяются заранее
- Полям задаются типы
{
"id" : 3,
"author" : "Хемингуэй",
"quote" : "Голод хорошо дисциплинирует и многому учит."
}
Определения полей
<field name="price" type="float" default="0.0" indexed="true" stored="true"/>
-
name - имя поля. Должно состоять из английских букв, цифр и подчеркиваний и начинаться с буквы. Обязательный параметр.
-
type - тип поля - имя одного из объявленных типов (fieldType). Обязательный параметр.
-
default - значение по умолчанию, которое будет добавлено к любому документу, который не будет содержать значения в этом поле при индексации.
-
indexed (boolean) - может ли поле участвовать в запросах.
-
stored (boolean) - можно ли извлекать поле с помощью запросов.
Основные параметры
-
multiValued (boolean) - может ли поле в документе иметь несколько значений.
- required (boolean) - обязательно ли наличие этого поля в документе.
-
omitNorms (boolean) - выключает хранение информации о длине поля, экономя память (истина для всех примитивных типов).
-
termVectors (boolean) - позволяет считать ключевые статистики для термов.
-
termPositions, termOffsets (boolean) - позволяет хранить позиции и сдвиги термов.
-
docValues (boolean) - переопределяет индекс для конкретного поля в doc-to-value стиле.
Основные параметры
<uniqueKey>id</uniqueKey>
Unique key
Необязательный элемент, устанавливает обязательное поле в документе с уникальным значением.
<schema>
<types>
<fields>
<uniqueKey>
<!-- similarity, copyfields, dynamic field and deprecated options --> </schema>
Собираем воедино
Определения типов полей
<fieldType name="text_general" class="solr.TextField"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.PorterStemFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.PorterStemFilterFactory"/> </analyzer> </fieldType>

Представление об индексации

Analyzers, Tokenizers, and Filters
<fieldType name="nametext" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeepWordFilterFactory" words="keepwords.txt"/>
<filter class="solr.SynonymFilterFactory" synonyms="syns.txt"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Components overview
-
SearchComponents
-
SpellCheckComponent
-
QueryElevationComponent
-
TermVectorComponent
-
StatsComponent
-
ClusteringComponent
-
TermsComponent
-
BloomIndexComponent
TermVectorComponent
<searchComponent name="tvComponent" class="org.apache.solr.handler.component.TermVectorComponent"/>
<requestHandler name="tvrh" class="org.apache.solr.handler.component.SearchHandler">
<lst name="defaults">
<bool name="tv">true</bool>
</lst>
<arr name="last-components">
<str>tvComponent</str>
</arr>
</requestHandler>
TermVectorComponent
<field name="includes"
type="text"
indexed="true"
stored="true"
multiValued="true"
termVectors="true"
termPositions="true"
termOffsets="true" />
TermVectorComponent
- tv.tf (boolean) - возвращает частоту терма по документу.
- tv.df (boolean) - возвращает количество документов, где встречался данный терм. Дорогая операция.
- tv.positions (boolean) - возвращает информацию о позиции термов.
- tv.offsets (boolean) - возвращает информацию о смещении термов.
- tv.tf_idf (boolean) - Считает tf*idf для каждого терма. Параметры tv.tf, tv.df должны быть истинны. Дорогая операция.
- tv.all (boolean) - вывести всю дополнительную информацию, включая tv.tf, tv.df, etc.
-
tv.fl (String [, String]*) - Указывает, для каких полей возвращать информацию (по умолчанию fl)
Information Retrieval Practice 2
By stdfx
Information Retrieval Practice 2
- 643