[ZF-10089] Zend_Log
[zend.git] / documentation / manual / ru / module_specs / Zend_Search_Lucene-Charset.xml
blob63e7fe4f3895fb0cac48855a930f946d2fd7db0c
1 <sect1 id="zend.search.lucene.charset">
2     <title>Кодировки<!--Character set.--></title>
4     <sect2 id="zend.search.lucene.charset.description">
5         <title>Поддержка UTF-8 и однобайтных наборов символов<!--UTF-8 and single-byte character sets support.--></title>
7         <para>
8             Zend_Search_Lucene в своей работе использует кодировку UTF-8.
9             Файлы индекса хранят данные unicode в кодировке Modified UTF-8 от
10             Java. Ядро Zend_Search_Lucene полностью поддерживает его за одним
11             исключением.
12 <!--
13             Zend_Search_Lucene works with UTF-8 charset internally. Index files store
14             unicode data in Java's "modified UTF-8 encoding". Zend_Search_Lucene core
15             completely supports it with one exception.
16 -->
17             <footnote>
18                <para>
19                    Zend_Search_Lucene поддерживает только символы
20                    Basic Multilingual Plane (от 0x0000 до 0xFFFF) и не
21                    поддерживает дополнительные символы (символы, чьи коды больше
22                    0xFFFF).
23 <!--
24                    Zend_Search_Lucene supports only Basic Multilingual Plane
25                    (BMP) characters (from 0x0000 to 0xFFFF) and doesn't support
26                    "supplementary characters" (characters whose code points are
27                    greater than 0xFFFF)
28 -->
29                </para>
30                <para>
31                    Java 2 представляет эти символыв виде пары значений
32                    символьного типа (16 бит), перое из диапазона 0xD800-0xDBFF,
33                    второе из диапазона 0xDC00-0xDFFF. Тогда они кодируются как
34                    обычные символы UTF-8 в шести байтах. Стандартное
35                    представление UTF-8 использует четыре байта для
36                    дополнительных символов.
37 <!--
38                    Java 2 represents these characters as a pair of char (16-bit)
39                    values, the first from the high-surrogates range (0xD800-0xDBFF),
40                    the second from the low-surrogates range (0xDC00-0xDFFF). Then
41                    they are encoded as usual UTF-8 characters in six bytes.
42                    Standard UTF-8 representation uses four bytes for supplementary
43                    characters.
44 -->
45                </para>
46             </footnote>
48         </para>
50         <para>
51             Действующая кодировка для входных данных может быть указана через
52             API Zend_Search_Lucene. Данные будут автоматически преобразованы в
53             кодировку UTF-8.
54 <!--
55             Actual input data encoding may be specified through Zend_Search_Lucene API. Data will
56             be automatically converted into UTF-8 encoding.
57 -->
58         </para>
59     </sect2>
61     <sect2 id="zend.search.lucene.charset.default_analyzer">
62         <title>Используемый по умолчанию анализатор текста<!--Default text analyzer--></title>
64         <para>
65             Несмотря на это, используемый по умолчанию анализатор текста
66             (который также применяется в парсере запросов) использует
67             <code>ctype_alpha()</code> для разбиения текста и поисковых
68             запросов на лексемы.
69 <!--
70             However, default text analyzer (which is also used within query parser) uses
71             ctype_alpha() for tokenizing text and queries.
72 -->
73         </para>
75         <para>
76             <code>ctype_alpha()</code> не является совместимым с UTF-8, поэтому
77             анализатор конвертирует текст в кодировку 'ASCII//TRANSLIT' до
78             индексации. То же самое выполняется при парсинге запросов.
79 <!--
80             ctype_alpha() is not UTF-8 compatible, so analyzer converts text to 'ASCII//TRANSLIT' encoding before
81             indexing. The same processing is performed during query parsing, so it's done
82             transparently.
83 -->
84             <footnote>
85                <para>
86                    Преобразование в 'ASCII//TRANSLIT' может зависеть от текущей
87                    локали и операционной системы.
88 <!--
89                    Conversion to 'ASCII//TRANSLIT' may depend on current locale and OS.
90 -->
91                </para>
92             </footnote>
93         </para>
94     </sect2>
96     <sect2 id="zend.search.lucene.charset.utf_analyzer">
97         <title>Совместимый с UTF-8 анализатор текста<!--UTF-8 compatible text analyzer.--></title>
99         <para>
100             Zend_Search_Lucene также содержит совместимый с UTF-8 анализатор
101             текста с ограниченным функционалом.
102 <!--
103             Zend_Search_Lucene also contains limited functionaliy utf-8 analyzer. It can be turned on with the following code:
106             <programlisting language="php"><![CDATA[<?php
107 Zend_Search_Lucene_Analysis_Analyzer::setDefault(
108     new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());]]></programlisting>
109         </para>
111         <para>
112             Он разбивает на лексемы данные для индексации в режиме UTF-8, не
113             испытывая проблем с любыми входящими в UTF-8 символами.
114 <!--
115             It tokenizes data for indexing in UTF-8 mode and has no problems with any UTF-8 compatible character.
117         </para>
119         <para>
120             Данный анализатор имеет два ограничения:
121 <!--
122             It has two limitations:
124             <itemizedlist>
125                 <listitem>
126                     <para>
127                         обрабатывает все не входящие в кодировку ASCII как буквы;
128 <!--
129                         treats all non-ascii characters as letters (it's not always true);
131                     </para>
132                 </listitem>
133                 <listitem>
134                     <para>
135                         является чувствительным к регистру;
136 <!--
137                         is case-sensitive;
139                     </para>
140                 </listitem>
141             </itemizedlist>
142         </para>
144         <para>
145             Из-за этих ограничений он не используется по умолчанию, но может
146             быть полезен некоторым.
147 <!--
148             Because of these limitations it's not set as default, but may be helpful for someone.
150         </para>
152         <para>
153             Нечувствительность к регистру может быть сэмулирована с помощью
154             <code>strtolower()</code>.
155 <!--
156             Case insensitivity my be emulated with <code>strtolower()</code> conversion:
158             <programlisting language="php"><![CDATA[<?php
159 setlocale(LC_CTYPE, 'de_DE.iso-8859-1');
163 Zend_Search_Lucene_Analysis_Analyzer::setDefault(
164     new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());
168 $doc = new Zend_Search_Lucene_Document();
170 $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', strtolower($contents)));
172 // Поле заголовка для поиска
173 // (индексируется, но не сохраняется в индексе)
174 $doc->addField(Zend_Search_Lucene_Field::UnStored('title', strtolower($title)));
176 // Поле заголовка для возвращения в результатах поиска
177 // (не индексируется, но сохраняется)
178 $doc->addField(Zend_Search_Lucene_Field::UnIndexed('_title', $title));]]></programlisting>
179         </para>
181         <para>
182             То же самое преобразование должно выполняться и для запросов:
183 <!--
184             The same conversion has to be performed with query string:
186             <programlisting language="php"><![CDATA[<?php
187 setlocale(LC_CTYPE, 'de_DE.iso-8859-1');
191 Zend_Search_Lucene_Analysis_Analyzer::setDefault(
192     new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());
196 $hits = $index->find(strtolower($query));]]></programlisting>
197         </para>
198     </sect2>
199 </sect1>
201 <!--
202 vim:se ts=4 sw=4 et: