SOLR-2519: improve defaults for text_* field types

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1128854 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael McCandless 2011-05-29 10:27:23 +00:00
parent f02bbe00b5
commit 0bec9a11fd
15 changed files with 537 additions and 497 deletions

View File

@ -349,6 +349,10 @@ Bug Fixes
* SOLR-2539: VectorValueSource.floatVal incorrectly used byteVal on sub-sources. * SOLR-2539: VectorValueSource.floatVal incorrectly used byteVal on sub-sources.
(Tom Liu via yonik) (Tom Liu via yonik)
* SOLR-2519: Improve text_* fieldTypes in example schema.xml: improve
cross-language defaults for text_general; break out separate
English-specific fieldTypes (Jan Høydahl, hossman, Robert Muir,
yonik, Mike McCandless)
Other Changes Other Changes
---------------------- ----------------------

View File

@ -45,15 +45,16 @@
that avoids logging every request that avoids logging every request
--> -->
<schema name="example" version="1.3"> <schema name="example" version="1.4">
<!-- attribute "name" is the name of this schema and is only used for display purposes. <!-- attribute "name" is the name of this schema and is only used for display purposes.
Applications should change this to reflect the nature of the search collection. Applications should change this to reflect the nature of the search collection.
version="1.2" is Solr's version number for the schema syntax and semantics. It should version="1.4" is Solr's version number for the schema syntax and semantics. It should
not normally be changed by applications. not normally be changed by applications.
1.0: multiValued attribute did not exist, all fields are multiValued by nature 1.0: multiValued attribute did not exist, all fields are multiValued by nature
1.1: multiValued attribute introduced, false by default 1.1: multiValued attribute introduced, false by default
1.2: omitTermFreqAndPositions attribute introduced, true by default except for text fields. 1.2: omitTermFreqAndPositions attribute introduced, true by default except for text fields.
1.3: removed optional field compress feature 1.3: removed optional field compress feature
1.4: default auto-phrase (QueryParser feature) to off
--> -->
<types> <types>
@ -190,16 +191,87 @@
</analyzer> </analyzer>
</fieldType> </fieldType>
<!-- A text field that uses WordDelimiterFilter to enable splitting and matching of <!-- A general text field that has reasonable, generic
words on case-change, alpha numeric boundaries, and non-alphanumeric chars, cross-language defaults: it tokenizes with StandardTokenizer,
so that a query of "wifi" or "wi fi" could match a document containing "Wi-Fi". removes stop words from case-insensitive "stopwords.txt"
Synonyms and stopwords are customized by external files, and stemming is enabled. (empty by default), and down cases. At query time only, it
The attribute autoGeneratePhraseQueries="true" (the default) causes words that get split to also applies synonyms. -->
form phrase queries. For example, WordDelimiterFilter splitting text:pdp-11 will cause the parser <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
to generate text:"pdp 11" rather than (text:PDP OR text:11). <analyzer type="index">
NOTE: autoGeneratePhraseQueries="true" tends to not work well for non whitespace delimited languages. <tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
--> -->
<fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"> <filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<!-- A text field with defaults appropriate for English: it
tokenizes with StandardTokenizer, removes English stop words
(stopwords_en.txt), down cases, protects words from protwords.txt, and
finally applies Porter's stemming. The query time analyzer
also applies synonyms from synonyms.txt. -->
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<!-- Case insensitive stop word removal.
add enablePositionIncrements=true in both the index and query
analyzers to leave a 'gap' for more accurate phrase queries.
-->
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords_en.txt"
enablePositionIncrements="true"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
<filter class="solr.EnglishMinimalStemFilterFactory"/>
-->
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords_en.txt"
enablePositionIncrements="true"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
<filter class="solr.EnglishMinimalStemFilterFactory"/>
-->
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<!-- A text field with defaults appropriate for English, plus
aggressive word-splitting and autophrase features enabled.
This field is just like text_en, except it adds
WordDelimiterFilter to enable splitting and matching of
words on case-change, alpha numeric boundaries, and
non-alphanumeric chars. This means certain compound word
cases will work, for example query "wi fi" will match
document "WiFi" or "wi-fi". However, other cases will still
not match, for example if the query is "wifi" and the
document is "wi fi" or if the query is "wi-fi" and the
document is "wifi".
-->
<fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
<analyzer type="index"> <analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/> <tokenizer class="solr.WhitespaceTokenizerFactory"/>
<!-- in this example, we will only use synonyms at query time <!-- in this example, we will only use synonyms at query time
@ -211,7 +283,7 @@
--> -->
<filter class="solr.StopFilterFactory" <filter class="solr.StopFilterFactory"
ignoreCase="true" ignoreCase="true"
words="stopwords.txt" words="stopwords_en.txt"
enablePositionIncrements="true" enablePositionIncrements="true"
/> />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
@ -224,7 +296,7 @@
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" <filter class="solr.StopFilterFactory"
ignoreCase="true" ignoreCase="true"
words="stopwords.txt" words="stopwords_en.txt"
enablePositionIncrements="true" enablePositionIncrements="true"
/> />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
@ -234,14 +306,13 @@
</analyzer> </analyzer>
</fieldType> </fieldType>
<!-- Less flexible matching, but less false matches. Probably not ideal for product names, <!-- Less flexible matching, but less false matches. Probably not ideal for product names,
but may be good for SKUs. Can insert dashes in the wrong place and still match. --> but may be good for SKUs. Can insert dashes in the wrong place and still match. -->
<fieldType name="textTight" class="solr.TextField" positionIncrementGap="100" > <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
<analyzer> <analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/> <tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
<filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@ -252,57 +323,27 @@
</analyzer> </analyzer>
</fieldType> </fieldType>
<!-- Just like text_general except it reverses the characters of
<!-- A general unstemmed text field - good if one does not know the language of the field --> each token, to enable more efficient leading wildcard queries. -->
<fieldType name="textgen" class="solr.TextField" positionIncrementGap="100"> <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index"> <analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/> <tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords.txt"
enablePositionIncrements="true"
/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<!-- A general unstemmed text field that indexes tokens normally and also
reversed (via ReversedWildcardFilterFactory), to enable more efficient
leading wildcard queries. -->
<fieldType name="text_rev" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ReversedWildcardFilterFactory" withOriginal="true" <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/> maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
</analyzer> </analyzer>
<analyzer type="query"> <analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/> <tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
ignoreCase="true"
words="stopwords.txt"
enablePositionIncrements="true"
/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.LowerCaseFilterFactory"/>
</analyzer> </analyzer>
</fieldType> </fieldType>
<!-- charFilter + WhitespaceTokenizer --> <!-- charFilter + WhitespaceTokenizer -->
<!-- <!--
<fieldType name="textCharNorm" class="solr.TextField" positionIncrementGap="100" > <fieldType name="text_char_norm" class="solr.TextField" positionIncrementGap="100" >
<analyzer> <analyzer>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/> <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@ -436,13 +477,13 @@
--> -->
<field name="id" type="string" indexed="true" stored="true" required="true" /> <field name="id" type="string" indexed="true" stored="true" required="true" />
<field name="sku" type="textTight" indexed="true" stored="true" omitNorms="true"/> <field name="sku" type="text_en_splitting_tight" indexed="true" stored="true" omitNorms="true"/>
<field name="name" type="textgen" indexed="true" stored="true"/> <field name="name" type="text_general" indexed="true" stored="true"/>
<field name="alphaNameSort" type="alphaOnlySort" indexed="true" stored="false"/> <field name="alphaNameSort" type="alphaOnlySort" indexed="true" stored="false"/>
<field name="manu" type="textgen" indexed="true" stored="true" omitNorms="true"/> <field name="manu" type="text_general" indexed="true" stored="true" omitNorms="true"/>
<field name="cat" type="string" indexed="true" stored="true" multiValued="true"/> <field name="cat" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="features" type="text" indexed="true" stored="true" multiValued="true"/> <field name="features" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="includes" type="text" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" /> <field name="includes" type="text_general" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" />
<field name="weight" type="float" indexed="true" stored="true"/> <field name="weight" type="float" indexed="true" stored="true"/>
<field name="price" type="float" indexed="true" stored="true"/> <field name="price" type="float" indexed="true" stored="true"/>
@ -460,13 +501,13 @@
Some fields are multiValued only because Tika currently may return Some fields are multiValued only because Tika currently may return
multiple values for them. multiple values for them.
--> -->
<field name="title" type="text" indexed="true" stored="true" multiValued="true"/> <field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="subject" type="text" indexed="true" stored="true"/> <field name="subject" type="text_general" indexed="true" stored="true"/>
<field name="description" type="text" indexed="true" stored="true"/> <field name="description" type="text_general" indexed="true" stored="true"/>
<field name="comments" type="text" indexed="true" stored="true"/> <field name="comments" type="text_general" indexed="true" stored="true"/>
<field name="author" type="textgen" indexed="true" stored="true"/> <field name="author" type="text_general" indexed="true" stored="true"/>
<field name="keywords" type="textgen" indexed="true" stored="true"/> <field name="keywords" type="text_general" indexed="true" stored="true"/>
<field name="category" type="textgen" indexed="true" stored="true"/> <field name="category" type="text_general" indexed="true" stored="true"/>
<field name="content_type" type="string" indexed="true" stored="true" multiValued="true"/> <field name="content_type" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="last_modified" type="date" indexed="true" stored="true"/> <field name="last_modified" type="date" indexed="true" stored="true"/>
<field name="links" type="string" indexed="true" stored="true" multiValued="true"/> <field name="links" type="string" indexed="true" stored="true" multiValued="true"/>
@ -474,11 +515,11 @@
<!-- catchall field, containing all other searchable text fields (implemented <!-- catchall field, containing all other searchable text fields (implemented
via copyField further on in this schema --> via copyField further on in this schema -->
<field name="text" type="text" indexed="true" stored="false" multiValued="true"/> <field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
<!-- catchall text field that indexes tokens both normally and in reverse for efficient <!-- catchall text field that indexes tokens both normally and in reverse for efficient
leading wildcard queries. --> leading wildcard queries. -->
<field name="text_rev" type="text_rev" indexed="true" stored="false" multiValued="true"/> <field name="text_rev" type="text_general_rev" indexed="true" stored="false" multiValued="true"/>
<!-- non-tokenized version of manufacturer to make it easier to sort or group <!-- non-tokenized version of manufacturer to make it easier to sort or group
results by manufacturer. copied from "manu" via copyField --> results by manufacturer. copied from "manu" via copyField -->
@ -504,8 +545,8 @@
<dynamicField name="*_i" type="int" indexed="true" stored="true"/> <dynamicField name="*_i" type="int" indexed="true" stored="true"/>
<dynamicField name="*_s" type="string" indexed="true" stored="true"/> <dynamicField name="*_s" type="string" indexed="true" stored="true"/>
<dynamicField name="*_l" type="long" indexed="true" stored="true"/> <dynamicField name="*_l" type="long" indexed="true" stored="true"/>
<dynamicField name="*_t" type="text" indexed="true" stored="true"/> <dynamicField name="*_t" type="text_general" indexed="true" stored="true"/>
<dynamicField name="*_txt" type="text" indexed="true" stored="true" multiValued="true"/> <dynamicField name="*_txt" type="text_general" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_b" type="boolean" indexed="true" stored="true"/> <dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>
<dynamicField name="*_f" type="float" indexed="true" stored="true"/> <dynamicField name="*_f" type="float" indexed="true" stored="true"/>
<dynamicField name="*_d" type="double" indexed="true" stored="true"/> <dynamicField name="*_d" type="double" indexed="true" stored="true"/>
@ -526,7 +567,7 @@
<dynamicField name="*_pi" type="pint" indexed="true" stored="true"/> <dynamicField name="*_pi" type="pint" indexed="true" stored="true"/>
<dynamicField name="ignored_*" type="ignored" multiValued="true"/> <dynamicField name="ignored_*" type="ignored" multiValued="true"/>
<dynamicField name="attr_*" type="textgen" indexed="true" stored="true" multiValued="true"/> <dynamicField name="attr_*" type="text_general" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="random_*" type="random" /> <dynamicField name="random_*" type="random" />

View File

@ -237,7 +237,7 @@
of detailed information when indexing. of detailed information when indexing.
Setting The value to true will instruct the underlying Lucene Setting The value to true will instruct the underlying Lucene
IndexWriter to write it's debugging info the specified file IndexWriter to write its debugging info the specified file
--> -->
<infoStream file="INFOSTREAM.txt">false</infoStream> <infoStream file="INFOSTREAM.txt">false</infoStream>

View File

@ -12,47 +12,3 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
#-----------------------------------------------------------------------
# a couple of test stopwords to test that the words are really being
# configured from this file:
stopworda
stopwordb
#Standard english stop words taken from Lucene's StopAnalyzer
a
an
and
are
as
at
be
but
by
for
if
in
into
is
it
no
not
of
on
or
s
such
t
that
the
their
then
there
these
they
this
to
was
will
with

View File

@ -474,9 +474,9 @@ SimplePostTool: COMMITting Solr index changes..
<p> <p>
You may have noticed that even though the file <span class="codefrag">solr.xml</span> has now You may have noticed that even though the file <span class="codefrag">solr.xml</span> has now
been POSTed to the server twice, you still only get 1 result when searching for been POSTed to the server twice, you still only get 1 result when searching for
"solr". This is because the example schema.xml specifies a "uniqueKey" field "solr". This is because the example <span class="codefrag">schema.xml</span> specifies a "<span class="codefrag">uniqueKey</span>" field
called "<span class="codefrag">id</span>". Whenever you POST instructions to Solr to add a called "<span class="codefrag">id</span>". Whenever you POST instructions to Solr to add a
document with the same value for the uniqueKey as an existing document, it document with the same value for the <span class="codefrag">uniqueKey</span> as an existing document, it
automatically replaces it for you. You can see that that has happened by automatically replaces it for you. You can see that that has happened by
looking at the values for <span class="codefrag">numDocs</span> and <span class="codefrag">maxDoc</span> in the looking at the values for <span class="codefrag">numDocs</span> and <span class="codefrag">maxDoc</span> in the
"CORE"/searcher section of the statistics page... </p> "CORE"/searcher section of the statistics page... </p>
@ -487,20 +487,20 @@ looking at the values for <span class="codefrag">numDocs</span> and <span class=
</p> </p>
<p> <p>
<strong>numDocs</strong> represents the number of searchable documents in the <strong><span class="codefrag">numDocs</span></strong> represents the number of searchable documents in the
index (and will be larger than the number of XML files since some files index (and will be larger than the number of XML files since some files
contained more than one <span class="codefrag">&lt;doc&gt;</span>). <strong>maxDoc</strong> contained more than one <span class="codefrag">&lt;doc&gt;</span>). <strong><span class="codefrag">maxDoc</span></strong>
may be larger as the maxDoc count includes logically deleted documents that may be larger as the <span class="codefrag">maxDoc</span> count includes logically deleted documents that
have not yet been removed from the index. You can re-post the sample XML have not yet been removed from the index. You can re-post the sample XML
files over and over again as much as you want and numDocs will never files over and over again as much as you want and <span class="codefrag">numDocs</span> will never
increase,because the new documents will constantly be replacing the old. increase, because the new documents will constantly be replacing the old.
</p> </p>
<p> <p>
Go ahead and edit the existing XML files to change some of the data, and re-run Go ahead and edit the existing XML files to change some of the data, and re-run
the <span class="codefrag">java -jar post.jar</span> command, you'll see your changes reflected the <span class="codefrag">java -jar post.jar</span> command, you'll see your changes reflected
in subsequent searches. in subsequent searches.
</p> </p>
<a name="N1011B"></a><a name="Deleting+Data"></a> <a name="N1012C"></a><a name="Deleting+Data"></a>
<h3 class="boxed">Deleting Data</h3> <h3 class="boxed">Deleting Data</h3>
<p>You can delete data by POSTing a delete command to the update URL and specifying the value <p>You can delete data by POSTing a delete command to the update URL and specifying the value
of the document's unique key field, or a query that matches multiple documents (be careful with that one!). Since these commands of the document's unique key field, or a query that matches multiple documents (be careful with that one!). Since these commands
@ -511,7 +511,7 @@ in subsequent searches.
<p>Now if you go to the <a href="http://localhost:8983/solr/admin/stats.jsp">statistics</a> page and scroll down <p>Now if you go to the <a href="http://localhost:8983/solr/admin/stats.jsp">statistics</a> page and scroll down
to the UPDATE_HANDLERS section and verify that "<span class="codefrag">deletesById : 1</span>"</p> to the UPDATE_HANDLERS section and verify that "<span class="codefrag">deletesById : 1</span>"</p>
<p>If you search for <a href="http://localhost:8983/solr/select?q=id:SP2514N">id:SP2514N</a> it will still be found, <p>If you search for <a href="http://localhost:8983/solr/select?q=id:SP2514N">id:SP2514N</a> it will still be found,
because index changes are not visible until, and a new searcher is opened. To cause because index changes are not visible until changes are committed and a new searcher is opened. To cause
this to happen, send a commit command to Solr (post.jar does this for you by default):</p> this to happen, send a commit command to Solr (post.jar does this for you by default):</p>
<pre class="code">java -jar post.jar</pre> <pre class="code">java -jar post.jar</pre>
<p>Now re-execute the previous search and verify that no matching documents are found. Also revisit the <p>Now re-execute the previous search and verify that no matching documents are found. Also revisit the
@ -520,7 +520,7 @@ in subsequent searches.
<a href="http://localhost:8983/solr/select?q=name:DDR&fl=name">DDR</a> in the name:</p> <a href="http://localhost:8983/solr/select?q=name:DDR&fl=name">DDR</a> in the name:</p>
<pre class="code">java -Ddata=args -jar post.jar "&lt;delete&gt;&lt;query&gt;name:DDR&lt;/query&gt;&lt;/delete&gt;"</pre> <pre class="code">java -Ddata=args -jar post.jar "&lt;delete&gt;&lt;query&gt;name:DDR&lt;/query&gt;&lt;/delete&gt;"</pre>
<p>Commit can be an expensive operation so it's best to make many changes to an index in a batch and <p>Commit can be an expensive operation so it's best to make many changes to an index in a batch and
then send the commit command at the end. There is also an optimize command that does the same thing as commit, then send the <span class="codefrag">commit</span> command at the end. There is also an <span class="codefrag">optimize</span> command that does the same thing as <span class="codefrag">commit</span>,
in addition to merging all index segments into a single segment, making it faster to search and causing any in addition to merging all index segments into a single segment, making it faster to search and causing any
deleted documents to be removed. All of the update commands are documented <a href="http://wiki.apache.org/solr/UpdateXmlMessages">here</a>. deleted documents to be removed. All of the update commands are documented <a href="http://wiki.apache.org/solr/UpdateXmlMessages">here</a>.
</p> </p>
@ -529,14 +529,14 @@ in subsequent searches.
</div> </div>
<a name="N10161"></a><a name="Querying+Data"></a> <a name="N1017B"></a><a name="Querying+Data"></a>
<h2 class="boxed">Querying Data</h2> <h2 class="boxed">Querying Data</h2>
<div class="section"> <div class="section">
<p> <p>
Searches are done via HTTP GET on the select URL with the query string in the q parameter. Searches are done via HTTP GET on the <span class="codefrag">select</span> URL with the query string in the <span class="codefrag">q</span> parameter.
You can pass a number of optional <a href="http://wiki.apache.org/solr/StandardRequestHandler">request parameters</a> You can pass a number of optional <a href="http://wiki.apache.org/solr/StandardRequestHandler">request parameters</a>
to the request handler to control what information is returned. For example, you can use the "fl" parameter to the request handler to control what information is returned. For example, you can use the "<span class="codefrag">fl</span>" parameter
to control what stored fields are returned, and if the relevancy score is returned... to control what stored fields are returned, and if the relevancy score is returned:
</p> </p>
<ul> <ul>
@ -558,13 +558,13 @@ in subsequent searches.
</ul> </ul>
<p> <p>
Solr provides a <a href="http://localhost:8983/solr/admin/form.jsp">query form</a> within the web admin interface Solr provides a <a href="http://localhost:8983/solr/admin/form.jsp">query form</a> within the web admin interface
that allows setting the various request parameters and is useful when trying out or debugging queries. that allows setting the various request parameters and is useful when testing or debugging queries.
</p> </p>
<a name="N10196"></a><a name="Sorting"></a> <a name="N101B9"></a><a name="Sorting"></a>
<h3 class="boxed">Sorting</h3> <h3 class="boxed">Sorting</h3>
<p> <p>
Solr provides a simple method to sort on one or more indexed fields. Solr provides a simple method to sort on one or more indexed fields.
Use the 'sort' parameter to specify "field direction" pairs... Use the "<span class="codefrag">sort</span>' parameter to specify "field direction" pairs, separated by commas if there's more than one sort field:
</p> </p>
<ul> <ul>
@ -582,7 +582,7 @@ in subsequent searches.
</ul> </ul>
<p> <p>
"score" can also be used as a field name when specifying a sort... "<span class="codefrag">score</span>" can also be used as a field name when specifying a sort:
</p> </p>
<ul> <ul>
@ -596,7 +596,7 @@ in subsequent searches.
</ul> </ul>
<p> <p>
Complex functions may also be used to sort results... Complex functions may also be used to sort results:
</p> </p>
<ul> <ul>
@ -612,12 +612,12 @@ in subsequent searches.
<a name="N101D4"></a><a name="Highlighting"></a> <a name="N101FD"></a><a name="Highlighting"></a>
<h2 class="boxed">Highlighting</h2> <h2 class="boxed">Highlighting</h2>
<div class="section"> <div class="section">
<p> <p>
Hit highlighting returns relevent snippets of each returned document, and highlights Hit highlighting returns relevent snippets of each returned document, and highlights
keywords from the query within those context snippets. terms from the query within those context snippets.
</p> </p>
<p> <p>
The following example searches for <span class="codefrag">video card</span> and requests The following example searches for <span class="codefrag">video card</span> and requests
@ -639,7 +639,7 @@ in subsequent searches.
<a name="N101FD"></a><a name="Faceted+Search"></a> <a name="N10226"></a><a name="Faceted+Search"></a>
<h2 class="boxed">Faceted Search</h2> <h2 class="boxed">Faceted Search</h2>
<div class="section"> <div class="section">
<p> <p>
@ -698,7 +698,7 @@ in subsequent searches.
<a name="N1024E"></a><a name="Search+UI"></a> <a name="N10277"></a><a name="Search+UI"></a>
<h2 class="boxed">Search UI</h2> <h2 class="boxed">Search UI</h2>
<div class="section"> <div class="section">
<p> <p>
@ -716,28 +716,44 @@ in subsequent searches.
<a name="N10261"></a><a name="Text+Analysis"></a> <a name="N1028A"></a><a name="Text+Analysis"></a>
<h2 class="boxed">Text Analysis</h2> <h2 class="boxed">Text Analysis</h2>
<div class="section"> <div class="section">
<p> <p>
Text fields are typically indexed by breaking the field into words and applying various transformations such as Text fields are typically indexed by breaking the text into words and applying various transformations such as
lowercasing, removing plurals, or stemming to increase relevancy. The same text transformations are normally lowercasing, removing plurals, or stemming to increase relevancy. The same text transformations are normally
applied to any queries in order to match what is indexed. applied to any queries in order to match what is indexed.
</p> </p>
<p>Example queries demonstrating relevancy improving transformations:</p> <p>
The <a href="http://wiki.apache.org/solr/SchemaXml">schema</a> defines
the fields in the index and what type of analysis is applied to them. The current schema your server is using
may be accessed via the <span class="codefrag">[SCHEMA]</span> link on the <a href="http://localhost:8983/solr/admin/">admin</a> page.
</p>
<p>
The best analysis components (tokenization and filtering) for your textual content depends heavily on language.
As you can see in the above <span class="codefrag">[SCHEMA]</span> link, the fields in the example schema are using a <span class="codefrag">fieldType</span>
named <span class="codefrag">text_general</span>, which has defaults appropriate for all languages.
</p>
<p>
If you know your textual content is English, as is the case for the example documents in this tutorial,
and you'd like to apply English-specific stemming and stop word removal, as well as split compound words, you can use the <span class="codefrag">text_en_splitting</span> fieldType instead.
Go ahead and edit the <span class="codefrag">schema.xml</span> under the <span class="codefrag">solr/example/solr/conf</span> directory,
and change the <span class="codefrag">type</span> for fields <span class="codefrag">text</span> and <span class="codefrag">features</span> from <span class="codefrag">text_general</span> to <span class="codefrag">text_en_splitting</span>.
Restart the server and then re-post all of the documents, and then these queries will show the English-specific transformations:
</p>
<ul> <ul>
<li>A search for <li>A search for
<a href="http://localhost:8983/solr/select/?indent=on&q=power-shot&fl=name">power-shot</a> <a href="http://localhost:8983/solr/select/?indent=on&q=power-shot&fl=name">power-shot</a>
matches <span class="codefrag">PowerShot</span>, and matches <span class="codefrag">PowerShot</span>, and
<a href="http://localhost:8983/solr/select/?indent=on&q=adata&fl=name">adata</a> <a href="http://localhost:8983/solr/select/?indent=on&q=adata&fl=name">adata</a>
matches <span class="codefrag">A-DATA</span> due to the use of WordDelimiterFilter and LowerCaseFilter. matches <span class="codefrag">A-DATA</span> due to the use of <span class="codefrag">WordDelimiterFilter</span> and <span class="codefrag">LowerCaseFilter</span>.
</li> </li>
<li>A search for <li>A search for
<a href="http://localhost:8983/solr/select/?indent=on&q=features:recharging&fl=name,features">features:recharging</a> <a href="http://localhost:8983/solr/select/?indent=on&q=features:recharging&fl=name,features">features:recharging</a>
matches <span class="codefrag">Rechargeable</span> due to stemming with the EnglishPorterFilter. matches <span class="codefrag">Rechargeable</span> due to stemming with the <span class="codefrag">EnglishPorterFilter</span>.
</li> </li>
@ -745,20 +761,15 @@ in subsequent searches.
<a href="http://localhost:8983/solr/select/?indent=on&q=%221 gigabyte%22&fl=name">"1 gigabyte"</a> <a href="http://localhost:8983/solr/select/?indent=on&q=%221 gigabyte%22&fl=name">"1 gigabyte"</a>
matches things with <span class="codefrag">GB</span>, and the misspelled matches things with <span class="codefrag">GB</span>, and the misspelled
<a href="http://localhost:8983/solr/select/?indent=on&q=pixima&fl=name">pixima</a> <a href="http://localhost:8983/solr/select/?indent=on&q=pixima&fl=name">pixima</a>
matches <span class="codefrag">Pixma</span> due to use of a SynonymFilter. matches <span class="codefrag">Pixma</span> due to use of a <span class="codefrag">SynonymFilter</span>.
</li> </li>
</ul> </ul>
<p>
The <a href="http://wiki.apache.org/solr/SchemaXml">schema</a> defines
the fields in the index and what type of analysis is applied to them. The current schema your server is using
may be accessed via the <span class="codefrag">[SCHEMA]</span> link on the <a href="http://localhost:8983/solr/admin/">admin</a> page.
</p>
<p>A full description of the analysis components, Analyzers, Tokenizers, and TokenFilters <p>A full description of the analysis components, Analyzers, Tokenizers, and TokenFilters
available for use is <a href="http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters">here</a>. available for use is <a href="http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters">here</a>.
</p> </p>
<a name="N102B1"></a><a name="Analysis+Debugging"></a> <a name="N1030A"></a><a name="Analysis+Debugging"></a>
<h3 class="boxed">Analysis Debugging</h3> <h3 class="boxed">Analysis Debugging</h3>
<p>There is a handy <a href="http://localhost:8983/solr/admin/analysis.jsp">analysis</a> <p>There is a handy <a href="http://localhost:8983/solr/admin/analysis.jsp">analysis</a>
debugging page where you can see how a text value is broken down into words, debugging page where you can see how a text value is broken down into words,
@ -768,7 +779,7 @@ in subsequent searches.
<a href="http://localhost:8983/solr/admin/analysis.jsp?name=name&val=Canon+Power-Shot+SD500">This</a> <a href="http://localhost:8983/solr/admin/analysis.jsp?name=name&val=Canon+Power-Shot+SD500">This</a>
shows how "<span class="codefrag">Canon Power-Shot SD500</span>" would be indexed as a value in the name field. Each row of shows how "<span class="codefrag">Canon Power-Shot SD500</span>" would be indexed as a value in the name field. Each row of
the table shows the resulting tokens after having passed through the next TokenFilter in the Analyzer for the <span class="codefrag">name</span> field. the table shows the resulting tokens after having passed through the next <span class="codefrag">TokenFilter</span> in the analyzer for the <span class="codefrag">name</span> field.
Notice how both <span class="codefrag">powershot</span> and <span class="codefrag">power</span>, <span class="codefrag">shot</span> are indexed. Tokens generated at the same position Notice how both <span class="codefrag">powershot</span> and <span class="codefrag">power</span>, <span class="codefrag">shot</span> are indexed. Tokens generated at the same position
are shown in the same column, in this case <span class="codefrag">shot</span> and <span class="codefrag">powershot</span>. are shown in the same column, in this case <span class="codefrag">shot</span> and <span class="codefrag">powershot</span>.
</p> </p>
@ -787,12 +798,12 @@ in subsequent searches.
</div> </div>
<a name="N102F0"></a><a name="Conclusion"></a> <a name="N1034C"></a><a name="Conclusion"></a>
<h2 class="boxed">Conclusion</h2> <h2 class="boxed">Conclusion</h2>
<div class="section"> <div class="section">
<p> <p>
Congratulations! You successfully ran a small Solr instance, added some Congratulations! You successfully ran a small Solr instance, added some
documents, and made changes to the index. You learned about queries, text documents, and made changes to the index and schema. You learned about queries, text
analysis, and the Solr admin interface. You're ready to start using Solr on analysis, and the Solr admin interface. You're ready to start using Solr on
your own project! Continue on with the following steps: your own project! Continue on with the following steps:
</p> </p>
@ -800,22 +811,21 @@ in subsequent searches.
<li>Subscribe to the Solr <a href="mailing_lists.html">mailing lists</a>!</li> <li>Subscribe to the Solr <a href="mailing_lists.html">mailing lists</a>!</li>
<li>Make a copy of the Solr example directory as a template for your project.</li> <li>Make a copy of the Solr <span class="codefrag">example</span> directory as a template for your project.</li>
<li>Customize the schema and other config in solr/conf/ to meet your needs.</li> <li>Customize the schema and other config in <span class="codefrag">solr/conf/</span> to meet your needs.</li>
</ul> </ul>
<p> <p>
Solr as a ton of other features that we haven't touched on here, including Solr has a ton of other features that we haven't touched on here, including
<a href="http://wiki.apache.org/solr/DistributedSearch">distributed search</a> <a href="http://wiki.apache.org/solr/DistributedSearch">distributed search</a>
to handle huge document collections, to handle huge document collections,
<a href="http://wiki.apache.org/solr/FunctionQuery">function queries</a>, <a href="http://wiki.apache.org/solr/FunctionQuery">function queries</a>,
<a href="http://wiki.apache.org/solr/StatsComponent">numeric field statistics</a>, <a href="http://wiki.apache.org/solr/StatsComponent">numeric field statistics</a>,
and and
<a href="http://wiki.apache.org/solr/ClusteringComponent">search results clustering</a>. <a href="http://wiki.apache.org/solr/ClusteringComponent">search results clustering</a>.
Explore the <a href="http://wiki.apache.org/solr/FrontPage">Solr Wiki</a> to find out Explore the <a href="http://wiki.apache.org/solr/FrontPage">Solr Wiki</a> to find
more details about Solr's many more details about Solr's many <a href="features.html">features</a>.
<a href="features.html">features</a>.
</p> </p>
<p> <p>
Have Fun, and we'll see you on the Solr mailing lists! Have Fun, and we'll see you on the Solr mailing lists!

View File

@ -5,10 +5,10 @@
/Producer (FOP 0.20.5) >> /Producer (FOP 0.20.5) >>
endobj endobj
5 0 obj 5 0 obj
<< /Length 818 /Filter [ /ASCII85Decode /FlateDecode ] << /Length 820 /Filter [ /ASCII85Decode /FlateDecode ]
>> >>
stream stream
Gb!$FbAs(+'Sc?EKpMG,W[)\;A^](F]'6";X0`7dAXaP=%MlUfI3gL4G%W@=;iJb,$[s,kFMoi'lQl8<#Q^V1JRfcDo90=`C]Y$,ra6;,F.=Eknd$L:i*j'qML#ar&J=7X1Y&G(cI654rda'bN[=boUE,"qJjCCI/jtjd(=L-/k0g>7O8lPd<3fJM)ik#Y%c^tc9L+=U'jWrgWl^C7mI%!(^<$-sQ`kJWh@WM-B^U\ncl?F_r6/RT8P_YMb`;OdHuALY5'94S*OeTs+WhiH%&0=:oFj=ODc3RIgl+%)WR=tleTCH[;/lGaCt"chW2H=qG#s)rY2n=<r(X3>M=Wo+o[&Z%c%YmGb`D1jmrtg3>nX`j3YqlZ4c+%rQ#^E+8mCF,GS3>dTYHVC]Gu1p'ESa%bb&rKXBfgqc5lR`,O>)^_=#B!mTkkMf\<3k'mO+N-g?Y?=k-g'Vd@Wln0:$D\Nf&/=iV0SKKJJfq.<jpn+>E&gWe#V%O5Da.e5@,l:%/`G58H0R7up_47R@2#B\opkHQnEfT5I!#L\2$rc\.[hVrbK+[$3?mm%,q_WW704-Cu^9o\dHAQlb8o-q.gmIhWBF$r38@rH[PXBfPZBn)&J^UY@S?L.%MZ.Wsmo=M2E:U+Jkr;"oTd,8"#FFh;hjBnoB/"1lmPnVJbc-5B9b[6Rl\ZHIu_@CA)(OAMb;hH3$TU&t+g]c<,[Np$<&<)F<bUG+u@kd$R`-OkYjLb0?)#IECr[&&7/V9'$>KKp+NN6?R\a<t9<j-6)S68fcBm,83$(Ys&0fIa4n"$oBlWR/gi/%@KDH7*P~> Gb!$FbAs(+'Sc?EKpMG,W[)\;A^](F]'6";X0rCfAXaP=%MhY6p6E,nfaH!V']\`9JtE.;Nq?!-2@2Q#69lqe+B\rjr+#g0RfEPd58_?$*2a's49EV\pcVh^76LmJLkt\gR;,]$k@lXUImNWm7hYmsd>gOI_&s55(EuGC$>Es'F(n[Wa8]:B.TrdbNQ2#ga71i--6U3fMCorne`9-ShX7Cn^<6:0QZ$rl4qUP7B^U\ncl?F_r6/RT8P_YMb`;OdHti.T5'L9o*OeTs+WhiH%&0=:oFj=ODc3RIgl*InWR=tleTCH[<H.keCt"chW2H=qG#s*!Y2oHlr*?>NM=Wn@o[&Z%c%YmGb`D1j+*Xbb>nafk3YqlZ4c=1tQ#^E+8mCF<GS3>dUq`+I]H2=r('4s'bb&rKXBfgqc5lRF,O<7t@!CZKpFaL7ltt1q$9YP"P&s4/XQhG$;m0f1qiMo`gn/Q(XCDQd_B&=DI'YEsGC&\#G-fA[_amn1MS.09HBDgF?,#ZO-IY$1:;!+e!F>KJH#/Hip7j_7JTN#a]UsYW\+gtk82%j344(gJ0KRD':?77Z=!RZ<R21R+534]*h>TcZNl]7YlqR5:[4A@=mr+?^2tr&hf=JSAC,VR]4SSO/.CRH_5Ms$\)Z0r702U;Xr(C%%7C1=@EoM)AR2NEV_kd7"">=VOfG8X4>JAH7;O\R-#m7R<leiqr274a8]n9]\"D(>BM&Cq#B->bURO-i3C1HU?Jbb'T4LPM^@Vd>p3AtbuC$)jjeQTY_[<#qW25StH<[Dj*.uLUZ5'ub*j^-PrEWnu*IrAR!@/~>
endstream endstream
endobj endobj
6 0 obj 6 0 obj
@ -291,10 +291,10 @@ endobj
>> >>
endobj endobj
48 0 obj 48 0 obj
<< /Length 3212 /Filter [ /ASCII85Decode /FlateDecode ] << /Length 3293 /Filter [ /ASCII85Decode /FlateDecode ]
>> >>
stream stream
GatU6=d.XL&UrVE_:kgC7)G*0Gc=T?MKRQLV!-HN*1,7f=:Sqt2NJHlg#Ltf_#nL]#jteEPp?EApXa*N$-Wp\Ze)7aY@jH5KtfjD,qa2.0FZoI(<G\%1eL:O3jipEcT\!"0RW>PO@='F\0UYCLs#`BQuSXBle#Qnq9bTr#SQ-*J?(Vcj2j6\c'd>.jh`+ckp_6%\2p\-q<d0&/,$OK<&O'CWq$smcL]DJhctR*GeM8Bm52)iE\WQBFT;p_7=OM!m]>7_!%]I:n=9PZ?<d7&0hIPsjM)LVT'f#CVm,2X:ojVE3/;Yj58Oi8;Hn.RK[Ar[E:1#Sb3QGM_G(;_C<p79r:&\4WmsqK@3;@D<j'EZ1e`,+gkpiJ!V5MMi-;Uf3t4AEI)6`dnHgAO>QYer)=L!sh+r[Dl7`ZF?;?,Bn2fB"j%WNL".n]>bGoHLBio5LkB7*26gkLZ^KU;69S9b*n3c%BC[6DW>>jX;bk2:%)(^a[$;2lh7cd=FAodCp3/F)OkIUE1JQhpEW1AbQ;GaRgGuOl5U5$jia"0Q@70#,@BP4$7<MW1>cNd<3g;Gj.9<;YAl^1+MZ@Jk"UF1ku8?m1WbEb@$o&A<CP$h[U^:q/9F7'a\D?o!GdiA(UDFA9H3+PqU&#gu)phR&pA[n:I2jXYmP\9Nb&<oFM.4G]W45dYhpU*NN:3iGW8/O*>F/1qb__VKYo(.]"XrfukW+P*R8j!-,+EY3=O@@#mAjB!%Wb/tBAjDDIR7gkB(T.Z/K,L:6\0#es"G/Fj0V>A5D\O2<_bop<A"etQ%6Q'?>F+37"Z'<"0aSUT-t*i:(3a+uWHdsfheWqkbQ0<c(=A-Zkhd0dFX%Ma1%_ic,:*tHp!Ft]aVAcf^08H8@UTfJ$_P;[$*'OeOfZcLJ"I$W]tq:r'Z3s5;59MrnY"edME_gY/!O#bfk(>^-&QO5r"3Md[[Ne]W.;7U-$%4e[iBg#@S3'V\qm9&^`g"a!L@4=M^&k\\E@*Wd^p1qZW$DkXW_sAd]-WKAT$e55l/r2Fit`/>YiQ^PRds5dS=nn1Bu`\]4<eES5MKu->59?3_dq1)A!P2?NrZ*iL;C8J0`@a6-6,TB2h)KY0L0:`J[R5$t>b.P?sd+'8.ATOfUc5d@(GY@:l_J0^5r;?q2aV!astSj64KYb<(h1JT!/I^&@3XEj!nhI*q+QQ5hGbJ"bq2Ofq@e-riSknSLjZ7DVrC]W_+a#-NSMoO&:0QpG+6?nP$Dkd>G-JrZ'd;O]2*9I5Y4%!0Y02d(eGn`_Kc.T.PWbNo2^KJiN+;WKGT*O.:(A6BM]$p-aW7>cccS)5I.p>TUjMS?d78?8IM@Cm+u?Lq3j*qYKU#LV=35/TrAbn"S7S6%]&M[(-50Ul:29OC#[!]?fSD);lX>n;(&-g?E,ld,$lp-U6\:Tm5*MoO2fLM^R:iZ%i8W51Q7GpZtm6Og,@UF#Om&()8J$#sP'Z>l85H_<ci^:XC>+00PMI&1u7AY`i%V?RF\+.-25mUY,u.?\j[V2#-;Y3(u2KL+71s'#*UU[%@9E259nE)q#7Os3bfq],)[$qG5bJ[u0$_1t.F?G/X)ACg1M8Y;+j"FWP-g:-s.$o8Jq1FEo,MG%p:Z&4A];57^P@ht3C6C%b2XE\P4PdH;^8c)EHq-8U=GE>^mk?gH\2,E>Mh&#Sri`J:l.Q<\i#8?#SQdchQa%`G`qK$-sE'9Y3fasB%"T3c^+8Wlpk*19n9G"#T`clKm$)2u8qH,g)I)k]c*fqt5cZ&).Fs)(-3rj/)p3!dFH,85dj`uk+-`mQJQpjN^Hl@RLV6+?nKqAKHZKU!h:&-&0@b6r]9pk*dl?/;8]MPiF<#5m*P]nllof!4a5Wf=Hpdu]]a?!fsIcqFUbe+T=5],<&Hg$Ntr+YjOg6IL*p5ukY\hp,OIKSV7cB`k_IJe&kr@:&p/i_RF*PXt2;-'o.3,uDhN]KFF-V>uV+1=6n7\!9udTsF$')E=-]T?ho)HRl!$hIm'g`YA18?8;Lh[1p;9Zgg-De2j3WiM6$`#kfhoc<a[p)Z&Eas-5'^1fBNn6VC4"1ItqeAM6-diGKiCp4RCa8DCZBMNq-eT[%tCphHJ@druk8GN9&CprFu@iq"$>h'sBd[_e2^L(_n0@F[#$&"!6bP@jU+:A-Q4J$%E&NSPZ)(b8(SM/Ymf6>3&R+Zf5H6<8-"B]0KJAR#KakEVdW_QWZl]G_r0:TC65g$&u90gs9."9(clWLo\&^m`oB)Smk"WDOF]>\/71:9"2"Ur+`&eA-oLTb2fd!3,g*Q?%#"'Pdk[+.irW5Us`.CL?mUb)R)#Ar>$$Q!?BWT/N+O0hH`j82!,K;FFHX6NKM%\Ui\A!;paDG4Okb\HCJ'Si333L>N\<L#HMekW2?I%@4:4KU"G]&1TZ.16%S0M<g6Iq4.fZI6&Do9UQ6]KX*q6Q,U(7W^88,,Xb)W+j([_#Dj3FkqgP"meD0MWr"!/Aq>1j`un7gQFN=@1nS6Vj(RP"3<i>,h]Tmrl*Df?@bO45MWu'_SX'N;>H*QMlaRSU,V.oB!9]%ft/'c,q>iU^";h,6`0rLJp_%W<EPC!oG2?Gep+qqr&.obe#`G:l+PQ*hX]H;\a^H_jh0FWo/r[ILE!8/!`!M5?<YkY5.oLj'AU01AVuJK.YRKLZmo:OBp#*fC-BLC9.lRr+Qg`#kq?B#5=!d!>hEk<hIt?qN[?faLa<5T.%^(t:@DNKUKI#q]PV_X6ee1EF&M*#VmZM7$0sXU[Ut+nMd0q.961Pq&_;pS(Sq\jc<6VQ]./d'7:\!-l40TTG9Fq4E)MFj`Uc5\%!tUu.^(-cY-dagF$&F4Q=K[NZf+k)E/rnZYb#`G7FF?>40&=PAIN)?J\W\I^_i_CCrE[UC3?8^?SmHX@qKG+Y@8f&1rSO^bq8YFf-L&3`)QQ$b[U?H\_E1Td+\kE3tDtib[q)YiH:#(i6&A*4d%D2=`^^X`d;<['25huQsnVgk)tf/1".uM7sF5POAI;O9W*\;5U.ZITSo\heCmR:W&m8=J-n_USafr\o%Q@?HYu6G@-F(c63GmuDoSs51D'^bek<`@0G6kXi$[B^9`[!pZ2,UeM.sm0mDpT(mP]#,m!<bUm`TAF=D-Ao\%>Mmj[C)4dtkSQ1lYQ77eD=_m<OT0f@?b3+7?3,R5Y[Kjf(RH&k(<_=$PoQ)`/=98%V4odf0@&iEV?~> GatU6=d.Su&q6H[_4%9ih&&K\i8r\HWf=47CTidr2OhkM!CK-c'-8o#c1183_6X.S*5sOsD#n,?f4aeNrO=n8[6"22juHZ@qrTGQM<b:1!<7(HI==Z'R)FPS8a#g6o@]3'o.C>okk^<46B?h"r?&n:j&B7'roKJ*c4#:H'+Y1M]oF+/IC%Xt\ZK*hr:-;;dZ8pZZc\ir0!<ZNT?0l?h5naSH[b3A$XEAK`M\dKX0gMS)k/[Je#HaOnDPP:/tLmjeN3k`7jRZ?';3Q!.t8=s3;u\PH^SHe:*tH_3t;G%ZL>[k1n3]sHk;1hMW;[/L>Rc-Q`_!!XfW.P9__P1ro2sn%rYO/L2mat0Wic4/K^j$Z4k2XeqE[W=0I%mURg(Pn:&RekIe\[KSX(H>\Ioc(I`U6/KW*QZq*S>/SZ`7A2gVLAMl&-QD#\LWi;n-\X>W?4#e8WmSJ,**P[oh@P'OuO>[!i3hL8Me2eas)5.XtUJXA:BXu$[g53h?%(nLh6g*=:m_#j'<rP6qBB"LWeEM?%e\G"[_(t:1Mnil^_bM'$=cCdhUe'4c#?a4D`&0M)XEYWKQpkhsJ5:_d:Cq^q`QET[)Y)1tMdmumrLPTeqW:,g\W\,G/Tgk`IFu`CQAs/KO@d,M,dK]$YFY)N_eits\Ko7k4Gu]5TEI;H8Z?X=!RHbZV`b[#b4?Gt6,:O3,NW>USh\lK+!^2mIL&*BS<<Oonb=)Ud-3;Q((!$i!A0>r\FY\8"*ufF>_lWK5@&44Aph2Jb\mpr"QpibN/g!W-odk)KA_7"66G/*GY/%O/AX%KDR,'Bi\,6fKcMVI\GIaMjR_:.As6>0%VW,VLj$^%Im/(T)\O6MTr6um.$;$?Nts`MY(-WIeKW9N$\JF]0FBlhW-0@RZ?"RqI3snq#4)+a$sW+0Kjp(XMd-rErfdtq:f:SsRgkGp.'hZe8!H0+Er$25"f,EUO^hFd&a7mL;lXrk7_DS,*$X,U?o]"n-m[3!Hd7m$SP*rV].ncL2'fA9;H@RTbY;+"8:UK8DFH.Dl\Sbs@UN"5D+/YQ@pmMtPLZmY9(akn6)T"]C3grMJ5DnT)>':"1KaiEM7K1p.-jDaU\]7UFj:=D>(eqK&EsV5o&?%.+RD@MAGlglekB6T1P7Q8.ApGQ4(;V0!"0!jUDl?JmmN$9^:ALap8=D'\Pd)$M]RARjPV3]$RH#gfiW8[W=k./hj+CjkYDr6qbjM4i&[5lpD;5<)>FC<mZJEE?7Ue.d")g$C3)h-WIeR%0ZP`3aW^usUSgXDOs3b1>lWD&XMG^76?a=3LkS-fb)-1Bp^+ftUe'.@q)pKL08b+Rkh2G`Us*lo[VNDiQ"VH.6173bOS-l[%ld-,fjS`No+D:Tq4OGuAoilnl)TS-U8G<!N(0PNlb3jI-2m=XrV?E@IL'NSl.%3FiD<]4\4/Z"I%qeW20]M3AeJ-/eA++(>!ekQ&=l)u'3>>h)i)PHHV,RJ]BbOXZ!+W^='7If7QRtqC9W6cJXqMT:=_Ri,&,Y?ElasBW_[>(3.r=HY>mdq<JPMiOj7@NBd%FgMF8?<kCCT,!e'YJe4o-G4QQ>1nhmEkdq35eqOGJ)kQC\2Y2*_&m"BK93N4\N\bIP3<D3gT)D7d+ZNq!UW[*C#`FEC48ir1[Bj\q4Ru;7A%8r)Tr2YUM&r@O^I?@k[N\u6eEc_%u0EHWD8U\F$gj"^Y5M*=Ff;!>T%7(;K_"TitclW`ZVqg=R"@9&'HoIr@5OA3@LUA;a4)lY?J8AqIqP!*!JRkbJ!4[=-=66k'\S0DZA/TEXUlpgK(**_QW?q8(VOU?r/G>uPdC)c<njsNc/lQME\`^BcFlR.[Tj[\:I%e?K]MfECH_]Np`.K1i?R^X>=_B:A"cR\6k,hHDC?'d"6[ton:U<"-?C<LOO4Xo]QR5\Fhn]#QfeVU7a7l@r?h*bJ([*o'iXT6`;8Rb?`80b_l2]q:/@;L.f^A5IEC,@MqpNHFOAVtJ!j2iD]\8`7(lR<lK5?;fXYquMPuq:VPi[5Jb,0Ve=!<P/)l/\J*VP3L*]/Sn,&KSP2^of\QNd)5/KTap\A,3$Z20gsG4K=jYF1C4`90a@kK(kJ]+c[uJ%h2)38fD5G'mlfrUKbd2%*LN5pI?DJOWWe4.2!S/sWG5CD-&HP&=0SUdcNmHpJ/Z"=/R5LUeF_'Z0mbjl;M<0b6UN:3V`c=_>a"<)CKPZm66-4lAjgcKTX@'FkZM"p)Hk?be@kArN2KU$>Rk:66\An;FlW%ZhUP_@h+d=HC3/lh0VH%$B>HB4g0k/TS45gC0!K:W>Dugo.=enDR-QDB9!-2!Am$)5h8=$>D?1,*iaRXbZF4!Ou9!g(9%:S4SO%gh.hIQB$eY<PUI:1\c+OQ([9p3/$TJ/U$R#ILh0EZu%Tk#lQLQAnCe9V?7j^]].X)R,*[o=:'AT@24RqAXV%@O[Qm30rWf@gPuq%_BOs^(CpMP'If^Mno^D.YakRf`Q'X8cEFh;NBO_9Xn+-W)k0]P5c8_RJ0fdF,tOkZZ'Ecg1:-K:=JuOmV])h]-UA^\)lFC@*<Y_h0ko5rqr_$^=U>kW/*l=XPZ$j?je430cI:cF$!EHVlMX\!0/RLpMapirqQAAML2/X(8<?/t;A*=@0YPGLJ5tI^OLWQ$92k.FVg>t"UN_"X=ugP[kV?"PV)\VAeDUUAX9#N4!A>JYIimP5'cHF?diuWu\BLfBfq^/;O_UR50.T3*?rJZn,;tJ6JN#dM5=!d!>`@83Ldl1>Nk77l.2&YC4R(S%ik:_Q@.:[RDfb=FElM"`\:=_ebS,S*BRqC\-n,ZdflhEsHu3#s23Z9gAl>,Bc*^nJMD,qOP`B91B=M:/NaYO5_(1q?G8OV8K66HV-Y9n^52/HsYnn=*m*nZl;//Obk/#&=>Ce#MW+Yc7KO^t)Xg91QFLr@a7\<4WY#9>6_46T2I0T,4;sD]O-nW9:TOY0FX#&Wt9_A(;k1-0MW!al/8(34h'QfI?]W\B(lp">sZSe/i?uue]DfA:[PJT5OPO$_1>K8&JP',_%]).2K/c8e%-_k"Lra:j%gn6]q=i)56irFrRY%csXFq3#c:a^kmW_nGfVkFcMN-KI>R:4u!K^D<k!\+np<@Tc;#haCOLZaC;o_V479;o&V(n4roiL,M9Vi!:m`105(&,8_<C)[16P'Hn=-])NXI;K8PP;r%P8.$F*O8G[,5?@#lfA:B^[:u-,hR!=p$`DOT]81@pYJ!KrqRYH=p\c`N\t.FaS^j7./-mHc*3EGPfJQjUG/gaU"l0+YMYjP[~>
endstream endstream
endobj endobj
49 0 obj 49 0 obj
@ -431,10 +431,10 @@ endobj
>> >>
endobj endobj
61 0 obj 61 0 obj
<< /Length 2698 /Filter [ /ASCII85Decode /FlateDecode ] << /Length 2818 /Filter [ /ASCII85Decode /FlateDecode ]
>> >>
stream stream
Gatm=CN%re(B'h3U!8p<#7W2HH5;nMm3I*2\o!m\JR(qR$eh=lc,cW[LD/";T<%^_9XtYA-lS#.G^3XYkE:3S41h)TI644T$N@e)$Z0?WT'*psa/tpd*:=Ktj]3_1q:XB+\$NE-mm;pfGW/iug%@<Dr_]^6l[$LU*G`*gIX?8.LWH&k(S4pGH+$^u60b'!Xk>p)N8'9T7*kp'lS95jZOppD!p$RhUM"pRrfeZq4-rilR16:;>,3[:%iq'C-?;u)B]t=P,c[BtnlmQl!fIlJ@P)ZLl<X;1-:&L$go>fD8ul=N%Kjns<n?odg\4b7@IB8No.Y<C4`[cF;6G8C)9+eu;q<qJ-'SgA?HGSNEOnJ"U(CF<4iB0"^>jDeE9MC$%1ZmsN3cg,?.ru]?WA:O$fo@,dKW,dWcdQ0oDS0+oAskeW@b!D[&Ga$'FI",d?ir1Ajl$9hgRmJ?kN380&ku!;kXt,4&3-<%2kk1m5pGpBEGT3cm2MIEWc.0'2$+sNPFGgInJd`ALnLbm4'pg"pAI`4JtFn]+IJsZ)FEkMKkU-oKjYU5F\/0p&bqNFtWtLTb=KALU^G^l(M#NO8J)g9CLk^+Z3'WL[de__.4rn)j)C$6b[i-=:YiSR]pO*D%I,oX0nhfpOhqF!/"7gUg[(4Vb!(HJ<3HG$CUtm-Sqat!PeW[^HUUe80fpij#G!Ee@C$mMmAEh)gWAO8^rBYi("U3Gh%YgUsY=OF*u^GORjpq=nV)J:PXT:07+sd!=9>Ld?).V,He9\5if5433M-ui"*(+"4(4W<H.PfaAt=hXGi0t?W)S=O7ADt*@U')m<%NXNK7CQ`mO+a)s1&]oArVi^3nVJ3'Y9"NBE[DO14ZVX<%on+XG`NJ6aUF]S;)Vi_`KL4.$(WGok2KL]_^8/B46,m\ZQ)`8k,5em7>&G%_W#Src#G8DUoi7@Y1a,&cY`70%s\@:\4qXL)6Qke"nM?FGuB8<6m+_thR-S([K75.p]=p$)>H%Wh<;Lo]'R(dSE+3h8m3&j)M@TE8WU&BaLH>k*1S"M3eD"7iquO3s%mYD,Pn,W1tX*lpE%)WQO)F^KNdb*]&H_+9Y^AVq",jp^;T`,8M-&l+4RPEMc/K!^H2=7$VTArG-`Jk$sPO&3O:RWAr"9!(XSbCq?!\\r2-+-0BU)V(Vjl*-*;Gb,aT_1>5/mdr,1;")@kVBZdLjhj&IQn;dCPhO8Z7Yj<BBM"-k/Co%k?9;r-"Z\7*U_Bac(jR<&go85JQ&`aQcoL2/_<S8IZ/]u?Qako"Z5H`'O^&5AC$qV.qLMW,E0o4YVkT7UhC2.Z0\@Lf1D;oos3h7L'Qc-N6RFJI;6JegEYkc3+6V6D;BA?B'ZIYd.('u1:dAbgW*YQ6F5J7R11^h("6+LT<pJj-!B'0snamSmPDb%+>dg,BeH#[.IGeAp7IC,s4Zn7#PAfG%:%YVrDQaT3)9Y843J;PW5=k-b]U3YD.3HMugB$4a9:>+NXZ>`W^:tM'1QL"Bl+YMCUtHY'$-.UCWnQHRO-.em#fhLR2WS3%Esgk7;NNuCY&4\Bj#DK<*dnrfli'*@`CBhtB]6`?gj:f`E$lp>s+DS?!cPZATl@-oqRSQur,qh@BqJ_HEm=ufXW)a1ZNe^eq8>He4p!+n0j^KfG-H+HnSTmJ#o@BHkdenFF(0%*T+\V2Pe[O)*Y63SNQMEp.DiS=+Vho?+nH$m-Vt-?%,3-WdGVWA/>dAaC;;o8:ZFg*:RJ>o7D+KW1*+(GCq$HTWRc6`6cN)dd2\<FWrfY,TR?*^(DFW@U0(2//JVg)dcKKbE>7G<Y""'[VcnD>:I1qi,%MiEDWcpY,#TG%;ptsVGU`2M4#To;[j*_9'nX#^WE(NL900pE3FH_e'je,4go-dnBcK.;U(Dqb!ZR$n4roY'bC/QhVc-Pa'.h"JO+\QjS&-)&@+Q%f`.S"Vf5h:UF@*4_c&t*BY&r[n[mks]DE-RL<jXC0-)C>.Dg[(i(I_K*//EJ/!@8kar)BU*,HI*V)hC1Z$]Mb(=b=iaQ.!uKNMd;a%<CJ:`uUhX/OMePr!:>B4%Z:[N8b6Q,)*'0D%SUYENSC7UM\!Q6L?/L2WKmAoLV,rY30Hg\4M/-70B;+@H_s\-'ULOWs6UT6Zp`tnAYYC!Pm<e;E4WLJ\mSDP]mIZT].Ep$oHlRQ.CY5m1%8b9]3h??&Wb!_eaKP[,,09&9^duI^uOtLetpKmgb@/ekrE:(R^<U;tGDV*k*<q;?RUd@LDdFTGIQSG;!0_@o&em[bT(]^YfPd`V1hsaV<)ggc-#%e-c<Pr#0:?$8oGUPCU(TK'gXZlaFHnRTH,X!Vg0R*X_CZ!?CJ!O<k,E0\0;MZ*Je*9IHIfjc*e5@e'f2[sNYc1eOY/^LE0riEMY[ati%6ldoaVgRG%^2PZ-Jf702>b"P$-HABgR>-QTH?740=F;BQKkKDrAOQ0-BFBDNmPK"f2_Z#[@QIhI:;g?\m4`s^?:Yk,DJ.+N%0(:>tW2\dfG:k%%dkN?qc2lPur=I,g(@:<b[0u+aqY;0OM?&']XBKkVX5!Fc?#@ID9AF(`Y1,EOXJs!RB=hl=:\raLUh`J<YX4`G\1#t.$d@tJ<WG<rr@W'$n*eg)TQ7k3F6V%\[d=U-=l\24nRa9e\:(9@`BtTOVWV6-S0ZejOa^D2N&HZAmMrWGIJabPHi(PYn\(g/~> Gatm>BlDcr')et?_>$[i^hU1dZ:RD<?q7MnL"B1t=^Zm4,2`lV7SJ&cH&OTUodSbJ]KALh_pWXJ\uN?A]&'KbhQ>)+<bGdbW3M!T+3n,TR"fJ4n5EHNkB"HcOVTlRAZX4,4aXY!HhH5Q."c05m?q+Z1Z9E5lEupPCf;1OaS=Zao09n[KlM""jcem),g/b:o7(9C0+_W9@TjAnJ^q>j9bKm$m(WZ`XKq'c0e'gI_g\+)V*.NLdH9;DG:Mo+;RHta-<GX\'uWXBZ-Ljc6H(r#n"lM#Q'')Sb$QK8>fYnpq--[!rjGMP0oU3ebWic9?o/qe2K;n2;aJWYK;ClEm[8A=Z\bKZG)Sj<l)hTtTur"4LM"3S_^=[mV@J_T[O,s\Znr01Z)Q?C(?$%2/bgnHOK1P*8&)D87E)HHBh.K!s7uMXgQcBZ2_V"!Kmk4Ad-#cJc!h2%dJ,pbT9'7.,29.mYWZ_J<2(k_Bm[<o7VKF.K,5:o6*d&d`(r9["Sq[Q9#;b^^>Qt[.cc\.TL,198NQ)T&<Is<:(O1;jQ0smU5:)<K7,^f(])S9oC_aiV*j$]h]!)d:k;C!6]g3Ofoa5<]=Sk-95fH-UGPbXj7jg^5T'o/jFs:"O`)9T[R7)%F]^M$&Lmn!mU!6klbU%^."bL"8c>A;Llj-c#=;>5.7aL7:Sg\T"+L1*It,>W&1TGLNY'-Dc+/."Rj(pd4`iHB0MEOp"CF8^_c,`XP=Da/[ZI?i78?`5=nu:=9Nqg9*d3gqJkCh+&TnD-D1FM+6m8k'98"U,#Q3O$]H1_20?\D-UR1C(4BZP_aFB-^1qA98\iMOhEZ9/I/nuKA\Hr*l\(Aiuiq(,>pjDV3H15VNj(`id-T5o&pGmLaE.f^_&Js)*1**P^@I&/;8h('E-s3ne\el$P.l%qXQ0rr<<kou?#NN79G-eOa>R/?P#\7h=H[1_7_'Wsi@M6J,/e#1tpNB`Cj6F6J'7=Wpj<7j^AQR0\0Aiq8IfK3:oAumNRp1j%Rli)po/M='IYu]%c%q!E#GhLRYWe<>R',))30#W&c@G9;nRoU4Xk3MA\r[h(=sJ==-9#GHKXK_4GqNTAk(5*L3gV9._TWn=Fbn_H$72591FFJA-O!Whpog/3179_gd=PFBmglFEXprudPq+\S\5jQP^u,jD^3X$lL)SR[$*rM$AAL<s6j3TbeSOV*@PI7M%<XPVLo?W(W9VCf@2Mq%/cek4lrC-7"Lot(KE_q.n*s"tf'^47aE`W-%SWA]KODaW#Tn%#(\-WG$.3YY:`8]%!d:>VpD3?F/c.9Go[VLp$?Z%%of%OV_(B-%%_>p)fV]jY@*ha?C#jST^JkT:'Ps8UP#S!Q7;f>*eKIJ@Cm\Qc8\&(T@hdFMJSL]bJoGH0U,p(<F5M^T16lP.FbnT9[PU4dRAT?]"')hjGq_j`pIc$<Xr8<ngc)ALSHSs[XPs_3=`OkM1snPdEcX+$2b=gr/I61sIT4tgpb6+tWZJiElPOT!;e12j/'L(^+4#^ZaV(e9O1Ci+FXo0Q:]gDnGpU7C7U0'tPQ1pSEk@f$"e^/ja;pV62\X7XKP\T%Y6Mm.ThBee;W"deE533+5In.?i=]'QJJ?G[Rs(YV\lE"m<8.P*?+d2XVt43>3MEg"j%i$e^j3D\l&4%9?r@cuo*K(8X]Bta[gXQfTJbP@Q0$JO)0p]]4Glu;O%qiELs6mc$_/Z0Gf_*Dh:<b8Z<GOQ--.mT5;fGFZg<pE(*o?q<OL19cTs-TS>fLL4di@]8h8o%qtXD/Acl,[DF?b\#\iTO-2Tf\K"of:1X@W@bi\Vm,M8)k?n?lYf/SS0B9b'&!E_(Sp=PJG0Q:b=CUiZk9S3(hTH=7f]iDYmXi29+OLLY32'>%W=ls`YW@N\V8O*nR(P[o=+u11aRq<0`"^<Y'[B#Jo93Ru8-+VQM)/K/R/5n`moSAK7<RVambV:9(*VG5OK@1VFo'>Xri:(LP/!jSETr%:CaB1b4F!/Z]Wk_(.QSos&lXilm``<B%@"!,e^t=Lahjl#5b]<TLY;IL1F@n:%!?GJjihKQ88K)gs8g'e7ORdId*_07H$R-+0q;0#61<L6b6L5?`Nd1+!B'T<G^(==P\f,;eQ=^L>T^8PD^<dBg+F+9*=P=psaaRga2kqRU4+s%uVBUsdf$Pjf3UP$$j=q"ViQE!++h>u8UI?RI_q-JLC(KFL%YrY_YgH&B[:DM"^MKUHKS.'E")K[]P]n_/i=M9oKt#<2W7`qW0;&gV.``]5X6Y6,iG+((eE"=;,`"H5'F:DePc=4Zg(K3-LFe1\[!+54#Ck)mA9k2M`lYXs(EtI9<da]]DkPM][$0klAd\;DaFo^arpA=obA`tJRnuLgN,BIX8j8HW?8u$K+[_qi;qm#+/'B\$S>nkhB20rJN=`b1[!^c!j`>/A>!Ob1_aV7KJ>*,X_A'q/jsBYue?#/K`RO:]0P)OJ0:9FAmWRH^60s@op+aQEC<=WdL<.>ZRc*pK)P[`#D3@A@-3_lV<96QKhq>]`='?&6kc_a6nnrE[LB^D<fRc0B/>d?$)_RWk_4fs3Y'>]m^Br:E>]q`hE%Np>[$@S:1'?=LfNc*;SL]Jt=-;5oTFBu8=UHJBi5HX?GW*ZK&(@P(h)UB2%M>I>!n^*nF.5eYgil@^>\UO9iTNdNf3jA:rqStb*@>4F>P`2p*->)L.u5DhD:d$\=/X;0[^O6dkDr2CTn>`bTH1IP3"QVO[I*j$pYo.5V$$.Y>O4l(1hAmTeUFV*Dti)mO)L5!rm6>"Sp=]"s*;iu<k#0-eFfK_SY<<gmd#8mLDbRDmGA<[~>
endstream endstream
endobj endobj
62 0 obj 62 0 obj
@ -491,7 +491,7 @@ endobj
67 0 obj 67 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 276.96 288.507 297.612 276.507 ] /Rect [ 356.28 288.507 376.932 276.507 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://wiki.apache.org/solr/UpdateXmlMessages) /A << /URI (http://wiki.apache.org/solr/UpdateXmlMessages)
@ -502,7 +502,7 @@ endobj
68 0 obj 68 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 260.304 178.713 350.604 166.713 ] /Rect [ 314.28 178.713 404.58 166.713 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://wiki.apache.org/solr/StandardRequestHandler) /A << /URI (http://wiki.apache.org/solr/StandardRequestHandler)
@ -511,10 +511,10 @@ endobj
>> >>
endobj endobj
69 0 obj 69 0 obj
<< /Length 2672 /Filter [ /ASCII85Decode /FlateDecode ] << /Length 2765 /Filter [ /ASCII85Decode /FlateDecode ]
>> >>
stream stream
Gatm>=``U]&q8H9@*QU-PB*nG`FE\s<CnZQ<DIn5ep3oW87Ed*)NqDHs#pl5@"T^a**$ar*YDk*J,%CSDD_:A_rdGDc2.tCp@.\0-ME;b"[N.'L")a0i%cLjjBeguVp0.LY9#V%qNcGl_06F%NShhQn;hmtX:,AoK_KHVrdXO\R!e)qiB@+k>%umcIfI^J:d8^OQ:1Mb4*f&2$&o$CEqF_laj>D)mX(uI=`*eqHd<Pto`ZW146uA(T!MB2Dg0764?9Cq/FBZLcjY$)G*1kG9r[DNRD8@-?k!K&7=KV)T!Z)f.EU&t+[_lGR6%4qj1ESfk0<$^0G:SP%,PSJB07H&#%lpgc3/&&GAq_0D2V<:0dlnE3g-*j=/r$A:@^!2YL@1[X+nqRl?HQ"(lLtqShPEDn!m('F%0d&9#A*qcoi`BF#R)Af@\'*;lZ#@&Wp%FY)+sj\nRZ6`^Tn7P%d2BHBP6QOWdj_@7ICFR>/s!=X7';=l5dnCo\OX`jSYPoo!L\.\`%4:*UC](#VMu"VL<)<Em,(0R2q-SC,=\&q.Da;RHFLmc`o:[b3:f-?WAMs)u*KKN9*t*`;=rAnD7Ob0qp!J)!C:r*CK2AJB?nT#S!,_@0]4+PQT9eA'LWIo]!%6SOLp`[7"?$Wbfga=@sp1A'sppV6Wb2Io[VP1m-N1D>F/9Y<$=-!l?n@msTYER>Om&d4jXki+abgH<lE9Sf/_X&jlQ]t^N:eR`i5UKsujX&BaRUk7!]E6?rcL/mM-&R8'&>Yo"5;i9F[am&t7ZML55P^Gg!V^MCOQIi.l-!Q(7PM-Ah`=#kW9%>fc&r3ILUs+]h2<u2Z$q[*kYS\*1F&#=5'n?HLLfIiU0.rOD>u9I/3@I#ao$meD>`bKX\R__30)N?TY',q$<Q+G@'#g!Zp"IB:dUise3,8E:q5*e@G2?I8d8uT49T%!>UO4]80[VFm6Pn7<A,plc_6-'e@'o3$W(mU7@;f'LBOR<nNk"5h*ftL:mPQVZS^'ad"L*oA!\I\`\,pe]Q'uH:R8-f5Pi\n@0J*hI4o_RI_`L*3ej#XD\iG6T&>m@:%;Q;F%RMW,9`kFl<E?-%:/Gl5WN<0,+WnlZ,)!Ote!7I4KTpGk3)h!uaE>Tn>F5;Y5IpX+BVK&pY3H+gJ6FfCO^#f7riiWmF?W(bjObg;PS^O$)r@GMh;-/;FN_1^gQck*1sn&s-f'C^``p#[.OK7Im)_l.Kd>W'[Y8D3Oj9^6UlNNT>fjD[R]0$7cLUkDf`(!lHXpEG7@3O<</^tP))`h)1Ui5bh=mWL4n*mc69A'RVVmiSBPO8N,QK<eJ<=W_)G('Td?e^hg/>RsBrW9s.0*/%KNNf5QUFYIfU+]Q6eV!(F-oAcI@F=Dg'Zr"-Y6:1-rD8]q/hirm&l7PlZB\YWaQN%gTF+/&5i6!IHcY:d-A+S!4RLs\T2&/ol,(]ikE8dK\<fg<n\adWJYr%Jl=Y^\MXd]Ya7c)fB+%oInGU]Z,qf-*9p%s@p<00:\!bF+MuSr-79j9'LXF^@-(?BNe/&C'i>O1l9`sGZm,SlRmIZhK@Yi&[#<3ldL<QNJ(`C@`CN6a6L_<8=97$0c<!h@%h;G(s16S-rs'7P/pUCoU>U2e?9^S6\rR;sW\2><9fWY25G@)pTYAYpS3i2=LXgk7b.T-iUZ+hNkJs'5EP<FO^g+Y2->E>/-H]Qhps(]t`\>H;g*YW"d&Dn9X9/)f`$2Yte#Y@"CgG3E//hFK%m-$(S4ed$q-C=&V72KV>cMrR3.`a<3CGuL#So,2FUZ*bqOW)mG8a<eT,s1V&#Un]T8jk+(>MhdD\)UOI7TscXcu2]5;XsTl-WJBJOqr#e,<'#/XUEH%4q^e8%BJG/]>kfA!&$c`*6mu3gG1*dlG:k@cr>sOOP^<AslcQ\R5FcJqgDXn$C_[EA2/]e+gL>jg`d0BBQV$d5qMP@$PO=@s'bSV8`.K!e'k#!dCsZXP$XBIYmaHq+JE8'P3/Pm)n>KE13rKBo9l$>HkofO_p64lGLiAaXeoiHdng:^fGZ5DA$+]Wt1'C'WP,1g>9Rpb/N0d8\f/;9`Q1llS^3@V9LLfM$@`-\gCt\0lJLG)nKlL/PMo#:#DW9!1F:XSP$\+<4)^t7[sUi.,%?*#95,##pdfa`qh6gZG#)"1`rTAF.Uae95VdOD6%G9D<'[e.F+47/Q/Kj&_`.U*R\RGk],5qDgTB0>@t%Z2(rND>]L2nZ8kQf(m?ohC^C&<VuJBs8"g\9b<35f^hfLhq2eQYF*VZM-i6b.HH>4X%lA%=`<ekO8AZK),AV0h3Yc`BTMS_'mA^n&\MUSoQ3$<Gjb\kW!7W1]a_(u2bhb%J#db'Gkf3/[iHSFj(Bsi&IWVsa-KPRD:tY`gl8l,[YCIm]e1MipZ*o<FBgn?`G[jas:KF"!jJcW\F<;a#!Kbcb]9=W#:r+t_h8gLI0Np.F#;pk?DtN(6LPhUIqUtuG^PG6$=m1R('?Xe]RNW)2*(%$HW@rBkB$&Glk.^G/+8elWjT/JK\iA=OJ"AI%.)?OO@O)^7$9NmT-@9;A$kQn5G837T`1`:f*`YPn$`"RF^hun2kL[!M-(usdiJ8ZAnAK]=*1ja+ffje/L'duFh\Wp$,q76_[sG<KHZ"GRg:qiF+3La:0[Hasjg.QVYkT.Y\j=d~> Gatm>>B?UM'n5n\T]T\6PO^1o80GA#<+T"]>LdUDG+R\Ui'uNsdQe>ipA!P.Ll44oKUK!mPW_L\\`hMiGE.^[qo>2@4PkJ"U##g!I_:Mcid5)N_J_(!hqnVM,tnGJV7bu\^YaG=Gk:eSW(._Qp:.m-><*f);6Q/u+eb'GO1G"ggF("Z-h#sLj"HsgmQL"\5C,9<QgNOZE1_Kfa8D=O3&Dj-cR2UYhQ-B)=;AnlX/A"'`qZ2[,ba+"s*Xj0V5jI'5M[,IY3rU&pB<Y'5\F^G8Nts2Wju*J-gt9jU2X<PVml1fWuI[o+rqa\o_1OJVmLpLe=4FefpHbKipE,LgT8:DLkq^t)7^A9*jg_b0Y=B0AYk]Sj*kneaj6*Me4I>!`=B`9CGbh:j57'*FP6^3Mb18r0R2@@K1nOL8i(K6@"I4P4U(1rDQ#h'[>Q?o:aN"Q!iZ3+ZXC@c_m]K"$iUSXdu]CQ+B(S%!Eh*o7]ll^7dUgk+P12Tgn1W`V]<EED<EMCX5;'#aGGe)8eS]Mi'm&:Olr^DGBboPkAc.XN4(X+kgOC3U@m,Z7o*d*bP'UABsP&>cLoaE>'4Y,!js,W1G]NA,0c"_q[k%1pNE\U1@D]E`ir(j$sXSkgA$Wl?^prme7Glb0TBXZ'2'p><IHKX)NdsQ55jU%YJ6b?=]Tgr(mJiI_J&#KL[nF'FXXZ$BT"2ifKqm@&9NUhhp]*Y'>qm"\0\?`--2e+(KJ/ZN)"22X0l\bY!Pf]0H-.*1:N-\Pm1+HXp03/<#P"eU3BtNk(oA*3@`79cNs2#a"M$nUT/aJ;ckql/93@MdAk`sBjd8e9YD]O<aP(1fFWF(!gSAVW0*Kh;?9dJ0/u4u!X!jiWR_!"M#[.HnD$=7j^F"_0NHGc_nl1OLIJ(T@RUK`Z1J.3?88@b>rP!6?&Ud.e5=T;2;j,uPpGJ0T+mHN7tW*s@D#n"(*]\)alqdf&7"PokbD.i6:F3B*Xt#1bH'9kE,_3UEA-P<*G`M7bKhQCn?@)V&hR0`]#_Fhb"K.T9Y".PAOWW5b_lN*cTc4,Lr^*]c/TZC*;63;D%&I<H]^=%4RRFtMgViFmMo=m)W!0qm/X*0C+*eEBIAV12QP>&Vn<Oba(,pfMe])j1`.R0#BsaNirU[a>C]`=S(\$1&AiP6(?QQ%fjo_KXk%^bAQ:?.M$(=DX6R/CQlG@o@H>#,aotW7i;Qg0?.^+,mZ":867SX#QX%+%9Ihd>G?r9@5Wq35E\9ni*H'0WGXl`I,?Mb,_ffp!_Mu3jleXV[*`]G;KA353"ul6=fnageLtI`25[3[''nh79.F#r!BEs?q/@;bCTdb3cFl>KgY/-jurle>8"SCqA"t5jC`E;=4U<%\sqp+<j6nt(gCu*T7`C']*5`-+WS2HJNg!s35'l-J4Whm7XGbP0^9ldtaf0L%[MJ-K@]KSr!C\]gL:_AETqm\ShPYc)Pc\52agEfmuTLNYe)<E7p#uT\TQA_&#<jg[bFqNE*A?/PFjUZ1!G;ED&B*u4qdg%UE=^7./PU.M1,M-dYD-\]1HFtMEI^Es9*QhB#jsoAi$A_5&h&8b;*@-d5>8(0OI80[5hkh1.%O5&L*P(HjD%qp+l"SK.O,IJ0MOk-F.]*nqH,"o>Of=rH[X1(Jd)6`Oa;/]R..VO=Qm\?=<ogI=R]2Y[BUXW\*JGHf258:UffXii.P1R(l3#TR6sc4S4TaOs4aHpNDKMMp.TKhN:&R8Z"nF1$R37=^";O`]hgB<2Y2!`!ICY_:Z^7TEF*YKiOt(8(mZKDTl>lA7IJRJ8<`:rTDKVMr<Cc4%jAZ<L'Zm.TL$=++;7S7tCNiLIr#)'b$Ko:chFZTj<U$&srkfb>I0*hb906'9$Q07-K4(m;MiQ0Q2'N6s<ra/5R0jq1dr)#DDOr\s,ApC!P8AFmlBiTPD;T&VJ.6mjFNjEos0F5o,U:^hUOh[XJ5?&/HssptL_;.hcF!qc4ar"ISD\%f28m@^KJYApRI3ddBFSYpN(0AgT<cI+EAVGae+=,>'tA[!AEU:6coWN\@$U)=;g"J<dW0QR5p*fL_C\+7(=M*=.UR!^l:XNpR,,J+F%=1@9k.*Jc5Nf2DE[C0U/>85AkWtgd!%!m&!,B.^=7"$$XWKPZ!2+R8h)pppUZ'eZ;h&7R;K<BcZ,lNOt'blWSF+[YZ@E8ldkNY9'P'S?"7g?Lsb2d>;[B?BWmfs.Y281p"D]!_D\Ved8#!M@ZoLmO>@]U.McG-h0kunq)I9!bCFbaInR6<>(+R3)s;@bDm%#rJNCR%d8@OjOAoR]%=ZrR#\B:PbI5W";.s:9Wk9%3HcY=nN)1h>E"96[pk-`h\-=%/PO;E4WS7VhgZ7O-;J5CK&WHJ+@FFQc;gF-cfTAN2Hjog4P\+ILh,CLDNpK=Cq:M#`Y$,OK#:tM2X-RBJ-3@"s8FV;7W%`S9La&`S)5'(HO2o^t;dC+8:PR9=[[YesH<,c2J$k`fRr3a!K@h2]*-[ie/)X!W=dJm'.[6PWT"Pi;@nCd70;K.b]VE*oj+&B'0_HYpJmm/\T[<Z2"jBI7kZqXU!:qIHDX0&%,(`6i6j#bYCgZ0i&W%`?leCRMPZ=$>ltIO;8G@7Tg=HOjmtInQp>Zs\-5Hbe$D8$ZSXuc=pp]=W/;#,:R/24k&(PX;"hpB?^jVpG,R<5OU$)>S%9*u)C*1_;JrWXNpS78X:RU%VT?^7sT]_)Nhn19N)YlZPG5KMbK#G6=OE;"uW?1nK<NGCRV2-]%#:INM+o~>
endstream endstream
endobj endobj
70 0 obj 70 0 obj
@ -613,7 +613,7 @@ endobj
78 0 obj 78 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 108.0 480.747 229.848 468.747 ] /Rect [ 108.0 467.547 229.848 455.547 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q=video&sort=price+desc) /A << /URI (http://localhost:8983/solr/select/?indent=on&q=video&sort=price+desc)
@ -624,7 +624,7 @@ endobj
79 0 obj 79 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 108.0 467.547 223.848 455.547 ] /Rect [ 108.0 454.347 223.848 442.347 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q=video&sort=price+asc) /A << /URI (http://localhost:8983/solr/select/?indent=on&q=video&sort=price+asc)
@ -635,7 +635,7 @@ endobj
80 0 obj 80 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 108.0 454.347 290.844 442.347 ] /Rect [ 108.0 441.147 290.844 429.147 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q=video&sort=inStock+asc,price+desc) /A << /URI (http://localhost:8983/solr/select/?indent=on&q=video&sort=inStock+asc,price+desc)
@ -646,7 +646,7 @@ endobj
81 0 obj 81 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 108.0 413.947 231.18 401.947 ] /Rect [ 108.0 400.747 231.18 388.747 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q=video&sort=score+desc) /A << /URI (http://localhost:8983/solr/select/?indent=on&q=video&sort=score+desc)
@ -657,7 +657,7 @@ endobj
82 0 obj 82 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 108.0 400.747 292.176 388.747 ] /Rect [ 108.0 387.547 292.176 375.547 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q=video&sort=inStock+asc,score+desc) /A << /URI (http://localhost:8983/solr/select/?indent=on&q=video&sort=inStock+asc,score+desc)
@ -668,7 +668,7 @@ endobj
83 0 obj 83 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 108.0 360.347 339.828 348.347 ] /Rect [ 108.0 347.147 339.828 335.147 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q=*:*&sort=div(popularity,add(price,1))+desc) /A << /URI (http://localhost:8983/solr/select/?indent=on&q=*:*&sort=div(popularity,add(price,1))+desc)
@ -679,7 +679,7 @@ endobj
84 0 obj 84 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 90.0 189.613 380.028 177.613 ] /Rect [ 90.0 176.413 380.028 164.413 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?wt=json&indent=on&q=video+card&fl=name,id&hl=true&hl.fl=name,features) /A << /URI (http://localhost:8983/solr/select/?wt=json&indent=on&q=video+card&fl=name,id&hl=true&hl.fl=name,features)
@ -690,7 +690,7 @@ endobj
85 0 obj 85 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 446.616 168.413 467.268 156.413 ] /Rect [ 446.616 155.213 467.268 143.213 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://wiki.apache.org/solr/HighlightingParameters) /A << /URI (http://wiki.apache.org/solr/HighlightingParameters)
@ -702,7 +702,7 @@ endobj
<< /Length 2366 /Filter [ /ASCII85Decode /FlateDecode ] << /Length 2366 /Filter [ /ASCII85Decode /FlateDecode ]
>> >>
stream stream
Gatm=D/\/e&H;*)+m_SDFt"Y6mfE?[*L^HT[Vh([@;CdP[V8s%/@h!UfDg:i]i[cr<#qWFRRf:(Q$:OpcYjT*[u8q+R8(OHZlMg<FX^=?4Za!&95Z?QLEGAUZcFK%ja/WXG!5NrML'q:XsJe0SGbHpZ^BS*#8U;Y(7U_/D.gWbr_]^CFWK-&>Dp2fnTdZ3=KbiGk4q/IM*e;UKa5HUCA5UACb:+8[AF\FGE!)m91%NS[;_XtKUNOF79QaGXoP68%;P\@R<^$`I4tAjaO0<KF>)rr<UN:ZT[3AF=R@fWjgfa#h;ai"8Gl&:8@B]WOr%6e.P!A2RnRuY7kWi'bSre2VV32%NN!/N*J>tQbSRTgJ]M[TiH')f^W,L_g<V'#^W]?B,fg=SE/`E$qI7JQ7%GUV.E;jM`4jL-k9&81:(lpY;u4DAhGS1L</auK738]Qlf$c2Bg-,XnhS$&?Lf'TP,3mMOJ4.7MRR>L*)S2)8D#>u^mm<NE_i3C]-[!4mgk9=X"@#-^ibtQU@Zk*7\e`8BTO0n'+pil9u30?0/"$WCiXnq=HDIj$U[ld!AU2_'1%UV7ItNZdIX:uI@L"klqK$oon8#50I_m,NFo!ge7^#`'_-J`"9VQ8Xi!TRW=j)eZ%.smL$_3)@;'&>XG7^b)FB.d\ik!>/N=>/Spd$E)*HY%R$nhs'_N]M9V$CM%oCiP?0;0Y(%Fn`Za/4pj`ZE34Y[tr-C-ZdV=nH4BlGfNPh;L*]kgC%]XT\qU`;-.)KqJHrE*hiG&:&V9.N.B1R4,WQB]H8fk/YW]'HD3@?=DfLf":p__0dEf$YfaGi^+Ur#'9HEoL_Z;M@DrSF:IY`-['8_isVKYLcmT;;D9.Nd)`2;KA1:M,;cm;r=i'opJ8aV[l5)HCRV-cm;GJWlhud.1C1O"p:@qH6DL^$WghglTPa[[!1?+!A:m`_hEjsObWAa8Y-BtjiW=2b@OpLNZ/rQc$F$mjOe0KoOJk9gp:;Gq6"=KI)skPa'Cc_G,V)LY^E?+0*_fNMQ<'D$OjG(0=)n/K\?\iERcR\bls9.gF3@ES!$B&%,)70P@Y,R>Qm*?X;qj*FPDMM6e7)T9WCH\q0Ema'roM/rU)l'#*jL,J6(0ke7ucah[^,4eFCmVIq`RKFJq]VDphPDWFSCq15=kP7UBM^fu/f+/QntpK[]*=pJt]\Wk'fUa`aOl&'5i_4G:ulDKOdarBb^^GC)G<LjGF"116dDhZG"""nldb08-87rbTGM-X`:hn3/^0@rW4Fg5HVOXeBP7!'4f5q#j*7]>li(21(p\TG[<7U9DkHpc;__TdDE-i'Z%7j8DN1@fP>3WW?b6DSRuZ$I8-(6Sh>Rges^%_LsYT3!jsFbdLdZAhtCA?kP8d5S]0i'a>]c_tO%TaE5#11f<A"O6/g%The6dE*:DM/[&st57?5[X+(&e]0s6%/#0!8D#%N=,Q6fmlOV![Vno2lrg)MFM,QA=k\+I2QEktl:X*):r/Ar/+)mWC?,jqTg%PdU%[?Rh_@O-c0TWULf,R`4TsM6aTrQN#TV]h.6GlBg6O$t[JHsdtgGLarJC]FY;\jZhH&T^Vj="<[CY/i;ZXYC"5%+rLb(GUo(n.iNnR]c$C2_\nAiK3R?$L>EG/<C!L8r/Z".*t^.B67o^_,)h)QoH8gWaWMa0:fE28\bcQ':6+bmXd[PM*$<.meC:TpIchrG8!e1>aAi35-!m?TBBC*[P,SV:@4+EOncb2/Ygi;E$eG_W5YOlKD*JQZ7Tai[HM,rZa8NX15qY#ltZ`U%QS)`Hj-0=dg/O'QmNm(gsPr=pNuCQu<+/0Uptl%G&JJ7`!MI&)[#U?+eu>n@uHV9=U]RF+bK"rRm&Z5CekY))Zqih%9OZbilQe6"idUecidP`V@GYifR&G84i*s*#T'5UUi(2OGs0MjVfCXGp'547<,iL]nLOiaY(bp43/i52M\6C>tVVLM=6gjl:t-eI!F@h(K;]V+1?SVm``UNjM9@r:X46U)mb^-X9?5jmk/G9?B^WgZI3Xl5o3[H7AeaBEB_;kI97ShC[osI9uU!;rn,Dtre47nBJ_8"AQ$uE]*KJga][Xcn`9q.,^!=$+d^[UdU43sH&9@kj.Tn)&ots44ng3e_bj@kOHbnU38njAR0210F]W,+oG+kcf6ZpS*-o-,bjKB;R0A<Rc8)%&Te+V(2@)hfp^DfU7*%"VRmc$id/t3G^h\PBL;L-'B@Fj1*>KAVaUT5'J+.ceE01nY?)cW_57(KNHFR(WY/0i`PsLA[XFA;%B;lHFiYO'TI"L)"]g5j@FDoFRVg`o>J6j805@g8CeAQ4;Ej$CrlGNuQX2!bp?Rj_hH5AS`4T^[+rWc5``/+~> Gatm=D/\/e&H;*)+m_SDFt"Y6mfE?[*L^HT[Vh([@;CdP[V8s%/@h!UfDg:i]i[cr<#qWFRRf:(Q$:OpcYjT*[u8q+R8(OHZlMg<FX^=?4Za!&95Z?QLEGAUZcFK%ja/WXG!5NrML'q:XsJe0SGbHpZ^BS*#8U;Y(7U_/D.gWbr_]^CFWK-&>Dp2fnTdZ3=KbiGk4q/IM*e;UKa5HUCA5UACb:+8[AF\FGE!)m91%NS[;_XtKUNOF79QaGXoP68%;P\@R<^$`I4tAjaO0<KF>)rr<UN:ZT[3AF=R@fWjgfa#h;ai"8Gl&:8@B]WOr%6e.P!A2RnRuY7kWi'bSre2VV32%NN!/N*J>tQbSRTgJ]M[TiH')f^W,L_g<V'#^W]?B,fg=SE/`E$qI7JQ7%GUV.E;jM`4jL-k9&81:(lpY;u4DAhGS1L</auK738]Qlf$c2Bg-,XnhS$&?Lf'TP,3mMOJ4.7MRR>L*)S2)8D#>u^mm<NE_i3C]-[!4mgk9=X"@#-^ibtQU@Zk*7\e`8BTO0n'+pil9u30?0/"$WCiXnq=HDIj$U[ld!AU2_'1%UV7ItNZdIX:uI@L"klqK$oon8#50I_m,NFo!ge7^#`'_-J`"9VQ8Xi!TRW=j)eZ%.smL$_3)@;'&>XG7^b)FB.d\ik!>/N=>/Spd$E)*HY%R$nhs'_N]M9V$CM%oCiP?0;0Y(%Fn`Za/4pj`ZE34Y[tr-C-ZdV=nH4BlGfNPh;L*]kgC%]XT\qU`;-.)KqJHrE*hiG&:&V9.N.B1R4,WQB]H8fk/YW]'HD3@?=DfLf":p__0dEf$YfaGi^+Ur#'9HEoL_Z;M@DrSF:IY`-['8_isVKYLcmT;;D9.Nd)`2;KA1:M,;cm;r=i'opJ8aV[l5)HCRV-cm;GJWlhud.1C1O"p:@qH6DL^$WghglTPa[[!1?+!A:m`_hEjsObWAa8Y-BtjiW=2b@OpLNZ/rQc$F$mjOe0KoOJk9gp:;Gq6"=KI)skPa'Cc_G,V)LY^E?+0*_fNMQ<'D$OjG(0=)n/K\?\iERcR\bls9.gF3@ES!$B&%,)70P@Y,R>Qm*?X;qj*FPDMM6e7)T9WCH\q0Ema'roM/rU)l'#*jL,J6(0ke7ucah[^,4eFCmVIq`RKFJq]VDphPDWFSCq15=kP7UBM^fu/f+/QntpK[]*=pJt]\Wk'fUa`aOl&'5i_4G:ulDKOdarBb^^GC)G<LjGF"116dDhZG"""nldb08-87rbTGM-X`:hn3/^0@rW4Fg5HVOXeBP7!'4f5q#j*7]>li(21(p\TG[<7U9DkHpc;__TdDE-i'Z%7j8DN1@fP>3WW?b6DSRuZ$I8-(6Sh>Rges^%_LsYT3!jsFbdLdZAhtCA?kP8d5S]0i'a>]c_tO%TaE5#11f<A"O6/g%The6dE*:DM/[&st57?5[X+(&e]0s6%/#0!8D#%N=,Q6fmlOV![Vno2lrg)MFM,QA=k\+I2QEktl:X*):r/Ar/+)mWC?,jqTg%PdU%[?Rh_@O-c0TWULf,R`4TsM6aTrQN#TV]h.6GlBg6O$t[JHsdtgGLarJC]FY;\jZhH&T^Vj="<[CY/i;ZXYC"5%+rLb(GUo(n.iNnR]c$C2_\nAiK3R?$L>EG/<C!L8r/Z".*t^.B67o^_,)h)QoH8gWaWMa0:fE28\bcQ':6+bmXd[PM*$<.meC:TpIchrG8!e1>aAi35-!m?TBBC*[P,SV:@4+EOncb2/Ygi;E$eG_W5YOlKD*JQZ7Tai[HM,rZa8NX15qY#ltZ`U%QS)`Hj-0=dg/O'QmNm(gsPr=pNuCQu<+/0Uptl%G&JJ7`!MI&)[#U?+eu>n@uHV9=U]RF+bK"rRm&Z5CekY))Zqih%9OZbilQe6"idUecidP`V@GYifR&G84i*s*#T'5UUi(2OGs0MjVfCXGp'547<,iL]nLOiaY(bp43/i52M\6C>tVVLM=6gjl:t-eI!F@h(K;]V+1?SVm``UNjM9@r:X46U)mb^-X9?5jmk/G9?B^WgZI3Xl5o3[H7AeaBEB_;kI97ShC[osI9uU!;rn,CIbYF?1$&rO#VbCi?B_UH&+ZX=S-bd3cOJ?]//#73S?ht/K5;+b"E',r#:-u+.Y,@ioA2n<R*0O4j"Qqja-Z]9W^$^^cS%\r"j]W%`La,\sQdOXV4gVqc_,1Ed+d>DV^]jgr!hY#T5R?')IZoQA-@"Ht*-b3EfMM<Bk\Su"TqgTkW7XB\m13Na'e[o9UarjBfI%gM>S#FYeMR&mV%SU3Rak3ei@G_Z<W#2FJPT*'\i8hFKC5iZqU@1%&(%>OpP3Q`S=6[a=70)G=.M<:AG)9/oh-Sm8+.XWVFTQYa8_#.`(C~>
endstream endstream
endobj endobj
87 0 obj 87 0 obj
@ -815,10 +815,10 @@ endobj
>> >>
endobj endobj
97 0 obj 97 0 obj
<< /Length 2933 /Filter [ /ASCII85Decode /FlateDecode ] << /Length 3267 /Filter [ /ASCII85Decode /FlateDecode ]
>> >>
stream stream
Gatm>=`<(T&q9SYd,lbb`#S<o2/c7LA?a]lAB,-1(,PP)GI+o8kigE&]D'oqOh-D_fkt;P^i>:W3`u=FPWs&'mPd(ShGEY@5@8=ATD2_0L@Dq`eE:$J73i;O=%i#Pk$L%h2`EsL#s?Ag]?U>pf5s4SUL$_80G=6!gD&L_ml*c4=7;Gh7dlhR5YnM0C!fkMQHd.DMmUa/ZC/HuCID+$%=*Cl?_:)=-?k8CKt]+cc9FBnB+f40b5$*Ympp9J!ZGp:oAfEs7;?JNmgj@.[tP-56H!PhXPCo6\Kf[b1a[%oGlNpBVd*QTGUEm'%@F0?b/:ksb?R6-jVAjp.o(6[AF*K%puar8T>&\:/kt/LT*4\Wg[C()'1&iHTRNsk..P@,gnB(]BoPgm8dr?hnp2).Y@"s^)Yo$gLEK/Z%)3120gSpYVNos.8K:.TZhMgVEM0HFhQ4u;`R*dI4j3]13EGMi)ZuG384tZcoYo!c3d.ei2@C02da09:V?B'+EbtI/>S+.cr.'@1F'+6R5)BEN&<FY/6h)K2NEcnfkq6gOMfF!3BE<$.No6/k3*r9;p@I,&mXf"LYR-Up]2%(.ZW5u'E2t%:5oaTCB^2`deCB$Ir,;*$cSEh(XHiIF/8oM6crVnbr*A.CVmMTb0(PJ""Hai!9tmAN_B7f"&_Fi(Hm`GMiG;\CMshMZlt+mo[;:;pjn>(m#9?ms:)!nb3(3U(:,nc9"eeN]CG/5UO1Dpa7u9i4$X+o]RT:2X&JLeCp36b0699nnqsoh]c1,"<:S;tR%O*+EgYa2N@efu]!4%"^#9$OXVWTmh!Gh:e\g/3lPrs%XhO7[djG`t(0]?UtBfQ_K*=pgHI6>"0SIMHd%t"u*"Oe4r!0h)P'K:h.>;Q6SnIfq48E(r71'JN9S-kF\BhgG0V(5%A&J,jg>DagU!i"sa/q<#8'Kfq[=^ar9!\V6S@'cl^D?JU<JF[@H1.e]2LcU/[iq.J.kYLB&&*L5Jc\:W+VYa7PB9URS,ZXo"D'?hAlK_POBMCi+:FfMWgrKVTCqtj-UJj-<0*(CraaI3Y:e!q,B/8@)MI9qh/mB?81i)%CHu`B#9_3=h@<&f_^Jqds/d7Xb2lk<,Dal#B*;?pJ?-<j02VN"q5$)$L6YZLP'0]I!CQ()IUo:YL7#+LG>M1k.$r:$;0W7'FJBOlha#M"U&"e<]s2Wq;QV&O>TX\+Nj]VC"?,H/5m;X<V8H9o)5Si`;L4G[B=2g#Q$W8A.'ae(o`:gYU#BN'lV$C`-3Y;^7$J]iNNa&5i>A#>6db$9fJ9h[GD,m++&n'1]fR'O)rE%QpD,YkLA[Y\t]L))N_hb]N'EKhpT@,:ZWuE:M>9hbLAZg)$-_)rB`7-I9S0Uq4O"4;NS<41[n0i'dbFTr.]U'K#OZ82GY2gp];D$d%ia/GP96H][8mG@._ruXYi\)VhO[lsY`"J"A$>7`^5eNq(ELk+OJ!Q/O!L9qU$&AR1&AL_(<#Z`;-6S$a*4i@&TMr"lV'Gc[+-1rHZa5O!&E*esNCa+diIW6(6chHm>Z\t*>`a!40<?fEm,#oNqffBk7a74eiiHOX(8<C$Za@Z5(Mu67cW7*6j.WA-mi7X@XHh\r*):Xr_5)PQN)[kjS8=dj&TkU,!uebV.J-#6D@U/[V%(0&^!Tj^q&(-U0j*%-G<j]l9T<5*d@m^@\&AEqq=2i6cr"@#E<*,u%a5QF10''J*_n6;TPS!:a_Ac0'jakU9/B(b(M5R5na99Y)$LRE(<et=V9T<\L'@3q,]h_dAB)$4c[kQ"1882M^@*af\f@F)EEP?]U*-j*rY!_`;QSAh;p4S!=C4h\UT;6A"hf6b4#Jpo1Hi0Y6Mdt.5Gh57i*fY]/+f;hd,DcL!u@PS4(mJ%bW9?]7g?\4]Wi"f`0?:baTa/Z5XmIWQ?W&KWm.uTf_AQSlp.8;,!Jt[L&aC/CbF$X70LlQP&MI->%K"=0H+,*?'#`(GYRhhJs?7`@5U;)imLCHe,ZaF@D"aj-h0[JL*1i)V6&.snD2Xr+7j?hWG42p#W5"#=":DhUrd^_j]t`40^7.P^`Z?I;8,13j_`^V68@RubpCTpn=#V0\A'?7A\:i1`,n:b%5cTYQBJ>_!fQ%u83b1#DVIU"LMJ@LD)mib/.0F6(C?8Co?(&je\hWJL5,9(C0^_g;N)5.>o((b&M7*=5Lq&U-]9u^Nhf5)WbYD$oo4cr6YNoApN)'nYJpiD7>:9GP:cDc\>F"%S<$QL?7?<g^mW=rL=.Mq>L3A@j-1@X#4DofdhNMD\a:ojV2m]27FROVZu-m'-%;66?B_'WNNOZ1))Q),\?5$).ej]`U+3M:0#dcLN*bmLXS:4nf^(s50s812V6K/nFu\XRe%.q#"SHj!MkY'PB9NL/:cEIXAq=U@RM;f=N]kY]N+($KDhl%5?"9MhNKiN)Oa90LH3mkO\mCom\%t.rf1]Ohe*ljM.+)^g_mTVCecerZ?WVp``\u?fVaU8DI?-6m:%#3UBWd$^mI8(!M'c\HOOVK"S5ue1OD#9P!VI9+OG2,%@#jq!dfX\]\brc7*'DfU]Zf6@X\Q@:qm@5&nC@7T3S^<iV"d&PT`Lil/B9ih;?j.q6c=?hn)30MVlJP7?)(%Ga"2uM&QG?LOpY":N,klT,c8u9;-)cZ.`3n-s*EZXZNC0CEt693C*K`kPR-/(^+[t92MD1nLFP7Z(<@W[<oRYr1L.GhE3@trgTFWe13$I:]U/u2MN:<D+tlih/sZp.IaC@q$W5!\Kt8&*L.W?9/ImDEr<SS0?s'&*5hU9Eg6F9:#0LZ<(;XYCBFsrUQm#0*A#(jPqg/>hYt,#;X,hcV@GjHLKsH3@UXQap6UdeW/A;'(dbju@Hp='lL;-IJ+7;m#?D-J:C>V2c+gbVP;K_(rh`a>:rVcC">'>OiV1-Ih6QYkagXh)f~> Gatm>=c_;s&q9:V+lm2i5ai9<*V7iBG8IlL9Y,e'Qja2+7GC.>aePWC4hlG=PUmP`8To"f6%VX>*N],&?r?A6DE^8>r-:ZC/c>Qp'Do`BJfoSnKl$d=.leo,jBeh!e]k9VmiHB'IZba`nCtkC`]&!'r1RFe.iAY@iB?P@hd/P6oZuAG1Q5XAC6+s$rEQ+q;WZH+./0`:MnBsX:aMjXgBC`'6pDb'=fN.RW'ET0B]YkG/lR`hVtp,fU.fYhblfk,n&EDGSO.(h_!cL9i?+'dGYH&t"DOIkB:Y.+Ket!tZB\R&*7?G1^4,cn-j:+aYW=$nXPS;'KHq,Vn0[aS'$8LIo'SRMou,tC)[$XEON;1MdsKV<`L`m0]hSQ2S`ie:@ggl?]:2c4ac(MIKuP7f8]dKFlf/#n'cTiBZ=B/#[O83Z"mE6>j5XfqgG?Q#Q8KUg2eAt0UtEe,VrqR;+S8XEI)K^8W\meFD_\a56<@j,C;&1uL%k)(.`\2OlaNMG+Vmj8i"77jMX4(8G5qP[+9-KXq`lOTk_*>s\o_)DIn*7Q]fHI%&I1]Z!K9!p$t:NhhctfdOUG&W-2SH\B8AEOP;+rMc,t[mlH,ugTg+a7<k>;t5di<=LEZsOTQf8n?/Kdrradk:%'DO'<^Z`*\)2X(08ji\6>^aZ</)^^[0=B7+*=)JVB78)1&^IGH;&=u`&_K[h_q$n:9X(89.-Ndat^i:J=_U>[4346EQV`'d(i]W$Cl.h-?JETSA+gHgn^RmrfBid"=_97igd)J:5l4W$da]n3+OpgU[<]UIBt8.P*40<bb;g!$dr,kO>%5(;%'cr[Q<#OMmmu$LR_2-(>8S!Qf9d2;\d=;7Q"=cBBZW\Pc:[\D%/);&Fieg5kR?sD`&QtIQSs0^Md^lrB2g*rq@hZal-aDc-g?^CnbP,P6JM)W\@?@AuD=_=LD6iHTN%s\=RS5g8m>G^UgBPn3Vkp`d%sYnIp5mddO\u.kHJ8,h(N-[Q<Vp\k1L%F4>NN\)RPuXQneq5QuShpf-O,nS%6GpAUjB1t;0S+l%g*;*gCBA)BUjDldORUfVIcA'Cad#.nib2R>(aE?o@#9FU4a&#3$>X>=4ZTc.s<!D44S(;SEL6)jg(0kh<"L-n3V-l:!aCNP0Q[Cf/dmP52ek$?C\chjP$_k]8i"Li&'0'93lcU\J4b*H=DjkDtPhO4\*jirsV"$sH?,tUbCL57k$nM4NR)57=U#FXjlLepXID=_VLW0cfN%0IeZ)Cq5GC>_30).[t7[DeS5g9S1mRaE>.!?_^/bgBCj\g_d0<.MJ(d2?4mm$F@V5XQK\n*#XT-_S7IQaBkVeTkHiZ0&\EWYrG\2E?ZMYL&W9dZ(uOo7e!fYVO6Jo_)*`4YBKupk33M(eW%XS`lkC6iff[2Cu^jo'AX@P[\4(*A5R%3qLn@)'f&7=Id\3$f8>Ff]`'h0tA!-IUjj'g:bC!:aL"09^GKGjrpMh2J,2S1P[3pTVm\#nE-b2r4iL#F"!W%Gmfp"`@O1r0c'I\&;?Nikf'n?FA9>8p8&LG5K]B(=@%U5312a3$h;"[TthH'd(0"(G`d\L/kE]K<'<,.i)/8;G`ctK1o_NjbVgqg5MSEW/`i9P2!8q<.VWKuX86X!d3I&Z'bX#;Z!"(Z*(k8["&/\9BQZN&/D[4C9`8K3X%UPAWdEs8=O-a_Q;WLtT.PlU6i24-TR[K`eDsMD\!W:2MJXE.AH,$%bp1mP4rBNW(s:FobtDO#dcXRRIt8AGVonC/:TPZLA1nFT?H+^TrA,jG(>7;7OB/DuWV,1h8-5-$(<u%@s&3+iY&94[5D?%0p;Pr_;-jE3kcH%u_.=`T,,$Xl;LlpHNr_gqUZB*Y,>-VXr#utdD-kUMM&-+lSlh/":+e)<#*iOL1!a5IJJ^_Tj#5_neZm]/V?"ne`toBt!(Vh%Hs=,uRtj4@k=e+T>6;JD8E<Z"F@U$*Ro[nFA=9$iIR6Rl-+9WU,9ide]YsUJ(TcO<I820Qr;rL-,YVD7;E,"?LAR,tn't<d^g`(02HQC`[;/6HN-5GB9>pc`0Cn0&@X?s/Oek]53F1VQc,!54D]7EL-G!BIl+rr"caMM"")!:h]6;k7]#=%Y\f%mRdK6+Fd2?>42Spo3\Z&)aAmO8cS4m(W)<OWU3IqhRFdr,h362Fj2eVa2S#auiM$m@'Vb91<*DZP&>%4I$U,_^h.lS6.)Ynh%FWtIJCj0Bj`8W[Jp,AaG&Dt#8%ACP*-m9#YMo$No4qu-GESP8RrI\E6>?'P,05+KMN>:EF#`kXY9jc9$H9_Z@,os-P9#lo>^rAr`SfDCD'I*XcfM"b&!aBUt(`o-&iQZLflGNiT2o`_FPJQ[X%(&29D0F@?]`>nOC2::[hJHAM:j`:Vh-N=GXI6?SWbg^5.c;/.&36[r4<YHf*2c)H%VZGI6,U7\13AFK<a.I:G?*;CS(a:3*O,VqMfi/Z>L^?"Ab@g,DOm@f:QG8*>0]nZJ6k%VaUHP-jUaDV6!8Q$c$;"U\HZV.$O0UN_#G[mBF?K2*3FA-Cr,,];M>OQm>i9"mo=8j6/W].F-s]/:=H+bpE-4"?T;:HQgZG`R3k9L=]pAco0L7c'OAt9HLB'02kP5_H^Da7ER$P:7S3'DKq/jGF1+3^G!Z!),(HL3S`F3d^Rq4W[K.G5cHHJAS,gUb4'(C\W@ig<@hI!n[e="C9Z=_b.hVSFg4GDjV`Q1o\4trYptnN2Y30iiW`\W/"lk8%6YZo]j/m'Al6N#fq_$juCngM2Qs*[FQMeT$QfQENaG%1J0C48pE'Uf[X=NH'UEZbP6h'LjgpIm[ZNFb(_lQ4&V9YtIV%\#QWENgnOVXU)O%I+-RXP0INh+]-RsWS;S+MMU(>8%-=IHF;.-8f\\@iGmXHe?2EXaY30?o0h,+Lbu[*@BfddM=Uf<s'7iXUp&,_1W9o&*Id6Xe8)V`.\"?iq2jqGET[@^,ZRlXu,i"c(9QcWPo2$O5e9G*Fi,@SD_.;P\9Ze;%XVo%eckB%Wj.9=GB-![BnV24TD?#?E^lHE"G)PZr-]l^HWjNN'OF&+e_pDeHJ>8/?LpS1Z4JHYaCa8ari6_LQpLD8,DCD:^pJ5D4^BT,;sk@XDG6SB_MlPpep2O15u6&r"$707?2N#`OkbeF*AJ*b1n*f#NFV%V=(H"R(;LJVq@M9Xd*IP/;C"nG4)fFF7Q3+-'.q='FFth#XU4T'qS3rRC#/m`h[',2ZW+&Ob4G]6c6;/+fpf/R!`Ed/O/9T[t.~>
endstream endstream
endobj endobj
98 0 obj 98 0 obj
@ -843,69 +843,12 @@ endobj
108 0 R 108 0 R
109 0 R 109 0 R
110 0 R 110 0 R
111 0 R
112 0 R
] ]
endobj endobj
100 0 obj 100 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 170.304 609.2 224.292 597.2 ] /Rect [ 111.66 626.4 147.648 614.4 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q=power-shot&fl=name)
/S /URI >>
/H /I
>>
endobj
101 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 360.744 609.2 386.064 597.2 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q=adata&fl=name)
/S /URI >>
/H /I
>>
endobj
102 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 170.304 582.8 262.932 570.8 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q=features:recharging&fl=name,features)
/S /URI >>
/H /I
>>
endobj
103 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 170.304 556.4 230.424 544.4 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q="1 gigabyte"&fl=name)
/S /URI >>
/H /I
>>
endobj
104 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 445.152 556.4 478.488 544.4 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q=pixima&fl=name)
/S /URI >>
/H /I
>>
endobj
105 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 111.66 520.0 147.648 508.0 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://wiki.apache.org/solr/SchemaXml) /A << /URI (http://wiki.apache.org/solr/SchemaXml)
@ -913,10 +856,10 @@ endobj
/H /I /H /I
>> >>
endobj endobj
106 0 obj 101 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 496.524 506.8 526.524 494.8 ] /Rect [ 496.524 613.2 526.524 601.2 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/admin/) /A << /URI (http://localhost:8983/solr/admin/)
@ -924,10 +867,65 @@ endobj
/H /I /H /I
>> >>
endobj endobj
102 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 170.304 421.6 224.292 409.6 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q=power-shot&fl=name)
/S /URI >>
/H /I
>>
endobj
103 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 360.744 421.6 386.064 409.6 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q=adata&fl=name)
/S /URI >>
/H /I
>>
endobj
104 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 170.304 395.2 262.932 383.2 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q=features:recharging&fl=name,features)
/S /URI >>
/H /I
>>
endobj
105 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 170.304 368.8 230.424 356.8 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q="1 gigabyte"&fl=name)
/S /URI >>
/H /I
>>
endobj
106 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 445.152 368.8 478.488 356.8 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/select/?indent=on&q=pixima&fl=name)
/S /URI >>
/H /I
>>
endobj
107 0 obj 107 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 183.312 459.2 203.964 447.2 ] /Rect [ 183.312 319.2 203.964 307.2 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters) /A << /URI (http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters)
@ -938,7 +936,7 @@ endobj
108 0 obj 108 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 172.644 407.947 211.308 395.947 ] /Rect [ 172.644 267.947 211.308 255.947 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/admin/analysis.jsp) /A << /URI (http://localhost:8983/solr/admin/analysis.jsp)
@ -949,7 +947,7 @@ endobj
109 0 obj 109 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 90.0 360.347 111.336 348.347 ] /Rect [ 90.0 220.347 111.336 208.347 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/admin/analysis.jsp?name=name&val=Canon+Power-Shot+SD500) /A << /URI (http://localhost:8983/solr/admin/analysis.jsp?name=name&val=Canon+Power-Shot+SD500)
@ -960,7 +958,7 @@ endobj
110 0 obj 110 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 137.664 286.347 208.656 274.347 ] /Rect [ 137.664 146.347 208.656 134.347 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/admin/analysis.jsp?name=name&verbose=on&val=Canon+Power-Shot+SD500) /A << /URI (http://localhost:8983/solr/admin/analysis.jsp?name=name&verbose=on&val=Canon+Power-Shot+SD500)
@ -969,45 +967,25 @@ endobj
>> >>
endobj endobj
111 0 obj 111 0 obj
<< /Type /Annot << /Length 2131 /Filter [ /ASCII85Decode /FlateDecode ]
/Subtype /Link
/Rect [ 137.664 238.747 223.332 226.747 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/admin/analysis.jsp?name=name&highlight=on&val=Canon+Power-Shot+SD500&qval=Powershot sd-500)
/S /URI >>
/H /I
>>
endobj
112 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 90.0 204.347 113.316 192.347 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/admin/analysis.jsp?name=text&highlight=on&val=Four+score+and+seven+years+ago+our+fathers+brought+forth+on+this+continent+a+new+nation%2C+conceived+in+liberty+and+dedicated+to+the+proposition+that+all+men+are+created+equal.+&qval=liberties+and+equality)
/S /URI >>
/H /I
>>
endobj
113 0 obj
<< /Length 1568 /Filter [ /ASCII85Decode /FlateDecode ]
>> >>
stream stream
Gat%$gMYe)&:NH>:nI"R#q]&L/q%Me3(8B"D7r23,^l=3mOfGa2O'H6qt1t8<ZGg&Gn%["89)omc>YDcL[F6QG4U,LSNZn"hS_$dSKJ3rYKttdpG?:I:J9kjo>g"2G&qlR*SO8*G8n#TEoDd7]d.59E.)Ag4'ulHOik/YHe.02-3mE7AS!4R&j7>`8l_\XM4!hjARbq4'Y9C*R1PEj;k)b?7VX6MG6hD:U%b8mflO"Z!`>a$RQQh&7dJK-'lTXmSF*Md?$e<rcb!4H/bMjaEk6lBNGu9>l*K1Y<@p%*\#E?3?W*gRbk#o/i&<%UlDVmUAQ$8t1EXf7<^e8#:a]6bAd5O,R0A87pUi#_X?936X_N-_IMsL#mcet.VC6=MGVl(@AW2ZOr'GqNg/]CEm[<gCH)qX\*p"-7W]+4=hOXE_eG8^BZXK(2cXVJGOpJ:5L\XffEh:AmQUErX:<l3K"bX2=4/76/"_j>3Q$%8T'@1?BR+$3;$](2N5_Lc[r+HsW<-T*G$>6B=X$L#2h?F]HIe/_PH-D->.fZpid2DsCnI9b?TO^qA;>cZjX5[2EM>Wa7f;[10(SsStU9a@?&gTo*A9XkV$GI\?aG\&p(nn,h:5%']a/5l[>l?#d2I@a8RA2o=dTd)O27@/&;^cr,8d?(JnZH/:B90?'b'M/DKp6:?D#&^)PVZrtG/4DC7q%b1p9KmVDY0aQ*!F^ZKPY`A5@eb4A!.&?L(/i-JO[Ak7S9s5?&ig[GDXXnfP8p4b1uMs9#=u+\0e6n&7hsYJeZX>;n&4L\Yi+Q[D,=^$/eS[39-Ys[#?\RI$R/-=&?;gK-dX=((I3UFaL\N-cSXk#F^J`L[q.lj1m:2-C7/\%sXC+9WGC3/&+4bK*m/?QM,Tji?4?(mE@P0<=p'6E-Z8WNd?P,8s;?.b>roO!42=ui.Zj'_(rl1h,+f!4*4:7B,OgYI*%nMmnIm(XkN-\?=ck6Jf"mbX]EOVn!'ZFjf>bT!.5.36Qlp&2:al_@c&](/I(GJ(oXCF:3?Rl'*&<:l7p%?>9f$TL%_j-jJ!9VrseVMs-!e"he<?f,Jls86U?XDf:<+uJi1QIA^9$X%Z_+%&S6BKG+MjDbol2;<X/t(PDu-\S7`>e;YfWXQOs-9,,?Ii?<5WJ,(6.A5mshiFi'.YOc]XTY'bOVAu2*n(&$GE"iR/:d[G0C=kU89BoX<,T=',r8s+=#pGKCNXTsBt>6Vh,I;\;ae2LrSR%rSK.;kVuC=81%4)@)8IO]-C7,XYMHK/iOFb=#`U3L#2$D<dmZ+%=@b?#1A/IY,`Zo-<TfkW^b4DpGt:T8(-It?J#m-;;6QEKR%H';g<?^5Z[NnSijQ$^AmB,eTG[!*^8f3o0UkG"FVWCJ@pV[[J[OuS,XE*G8?cVPgT3bI7s-jk)>jMM3=QS@9FDV:RF[nnRq1g*[8Yl-3Nk%A4_Ofm1S^=A=$Kg*O[J9)>.gkgDTS.:km\6*IQ5BQ'=D!r?_1Z?iBR-TK=[-b!J%t6^""HOYI?%!>(c.nX[Oc$R^,"SeZ?9dY`.l<QWe3@J9N8aa@rSo#l~> Gat%$gMYe)&:NH>:nO6Z%4tK-X`$oF-R_faXUPt5gBUm@m]r.sN@nAG?f0g7.h3kF]ggpf-#r&UkAk1U%hG.*&"BaAlL!Nuo-X-emmU(Vs79(eI\5i]NURuJ^MQ0IFnP--kYVPf*k!$f,ilj-l4&>R6mA7M&!cn@]3J>@<K"HchL!RD]&(Q_r9j9q4QQB5ej#ggl:IYV#M$slWk(VlZFY!'CV-\4*")q!R+.R+C?n\WZY6V-J%UQ/B?oE9iFcf%7dafXPt4M0G@X^60uD4VpS&@I-gTTuneA06Z1n-.DaT/E6kKYI8ph2M4IYJ@an2J&I$0/fGP(<Y#`d?XcC8d4('M=;]6t!8SI9`JUnRTqkbSVM;o)R$Jq1C39I<Q0aQ+i:o"A^,K5l2m(6*Xfo&CdHoMKaX*8j.G4-JfC0:E^Kpan"CJT</S:u301oh?2'8KVN#di`uMYG[PUT"K'K\e/dd%Okh,WMts[gI>2'1gVuoYtGf2krZ>$EqZQa4nIb:1b2p:fb-fHSNIH1"1(7U;90:e9lI2VmnlMIP-Yh:LdnJA$)Q%J*3GJc[V1`]3NEXd==90<'3/TIa`;:RWPeV.C'q$]GoAk0fa]/sReVHjCs"1iD;%dL@@ti+`d^ip.%Q*G#2CEqfV<g:Fk^P;$qmA3&!R]:i($f1A`!Q9@OnQ='(U]$;)Fud+^pC+@Y4k.iUMF)0Y8[tqD(,EolnE+5?3d"g#onZgML;`.(^E<XUM>7X@0d(AV60]qF@(aghI1sJ6Q$ITGK*H/*M#3hR"io:m4\&VQ.N$J+X<';Q$[u,s/*!*ik5ZHrQ!)WUW0X8(FB!e'oKDhM,oFb<!>:#7j"(EIh`-d03ZM8ZSZhNGZ",fGh?:Cta]HGZjdhXQr5gio7:SX:X`VlLC2c*]k;506CQcFHDNu]U6C:Wh[KQ`51Ot%7r=$@&qFJ*A'X02\,59UYtM[>qZd2-\R2+P.qkBVtJ5rU4+j)6mLuFs4HInHk]YX)iE[GQPo:DDQ,aYFh'j-L3hHWC4("10cM.Q]IK,AHf1<C!,>%XU+R/4lTmi'PCP#U"d?'PTWtnhD7;QD9KLGPmp6H<'GCF?6&c:MraO+aM!T/)5S`=LDc*0Gn'VB4St@4P/]apk3R)(@kak?\Z@SHBGRDRH<Qh(g*e=!IO^$AG$?rROnu@lsMTM?X*#d9)fL+Q!jF?cXbpHg'5JhXo)B>)i.oG9KqL\SHG`g"i18]b]h.eON(\SEU+>XhP`Eiku\Qi;G;7*Ao'[@,FgW[6Q`=hbf:;WE#[K;nG@s,Z%2&?RXohEpp*<taO!8-B='OYlUQ[4$.gcWK"6o]hKA[/,u$@"WZEHHZDL>7^pj/i@g"/r]t7,\3UE%:(=r[$@1\@im#!t(sQ`$p0oG*4Yi[P0Drq\=8nEe'TBL,0/`R0!o<qgQ"0/`A`=:Ij4!FMH,s0dSNuEYqXu]r(kA7]MFg?<l#oc72Z^mHYFe"*=aA;>EZ1V#ihZ^f(m1B'2uuMZ#)>N#d\[Q!bH2B!ogE5o=&=^n_[;_DcbgkV.6=`3bZ;$e5I/W:<=+V1R?#^hF-/Y41KtLr(c5l)[$P0*&i,IL0\]^g7NY,#28:\tqmC=:,^Y#BV-\[BLUh<nN`dO<q[:,XN9$N"QmPDb5LO"gSka`Tdc$qfJ47-lZg5iJ#`,UD01%W8Za2Fb%]cC)h[7B;pF-'EDe0j6J4=)ED<-4rV=Q`j?QJP2WLoX@GdP:X=eo261pf$XO6rgPX*^(;^IRNn8Mq;IPNp2"OoO)DJi-\.h_UnKbUiDC4gLbh2]GI$/8dG7r/%inh&-GTa%<2]&3@K*RuSm,PAEapn2PAbCt^`*u1a2qnb?:[":b12/H>0U'mnf9:Y6TpB1mOO.\MrrU*%g!!`/]8lPSEJ#o;=s9tmEIHJC3Ed97NQ8Zq?:(9Xbi+A'$/pfI4f/6r0ssNs=O4E@7.7].%MVguY2acn#3)=?$rl21$g$\aF!J?bq$r:b_El47iXtS0C`$P,ZkV1crF+Q;OKt7/\B:L@VGZP'*"8b.gT8:cF1tP3p#uP'+<`U<bkGW=oItN0GkgNbjnSXXD7ehQeNCLT;ghrAm`>_I)hL"2S?Q5i/6^GK'*Ys]r#aZgi"5~>
endstream endstream
endobj endobj
114 0 obj 112 0 obj
<< /Type /Page << /Type /Page
/Parent 1 0 R /Parent 1 0 R
/MediaBox [ 0 0 612 792 ] /MediaBox [ 0 0 612 792 ]
/Resources 3 0 R /Resources 3 0 R
/Contents 113 0 R /Contents 111 0 R
/Annots 115 0 R /Annots 113 0 R
>> >>
endobj endobj
115 0 obj 113 0 obj
[ [
114 0 R
115 0 R
116 0 R 116 0 R
117 0 R 117 0 R
118 0 R 118 0 R
@ -1018,10 +996,32 @@ endobj
123 0 R 123 0 R
] ]
endobj endobj
114 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 137.664 630.4 223.332 618.4 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/admin/analysis.jsp?name=name&highlight=on&val=Canon+Power-Shot+SD500&qval=Powershot sd-500)
/S /URI >>
/H /I
>>
endobj
115 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 90.0 596.0 113.316 584.0 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (http://localhost:8983/solr/admin/analysis.jsp?name=text&highlight=on&val=Four+score+and+seven+years+ago+our+fathers+brought+forth+on+this+continent+a+new+nation%2C+conceived+in+liberty+and+dedicated+to+the+proposition+that+all+men+are+created+equal.+&qval=liberties+and+equality)
/S /URI >>
/H /I
>>
endobj
116 0 obj 116 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 211.332 617.2 270.348 605.2 ] /Rect [ 211.332 486.866 270.348 474.866 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (mailing_lists.html) /A << /URI (mailing_lists.html)
@ -1032,7 +1032,7 @@ endobj
117 0 obj 117 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 440.424 567.6 525.408 555.6 ] /Rect [ 446.424 437.266 531.408 425.266 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://wiki.apache.org/solr/DistributedSearch) /A << /URI (http://wiki.apache.org/solr/DistributedSearch)
@ -1043,7 +1043,7 @@ endobj
118 0 obj 118 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 259.644 554.4 337.296 542.4 ] /Rect [ 271.98 424.066 349.632 412.066 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://wiki.apache.org/solr/FunctionQuery) /A << /URI (http://wiki.apache.org/solr/FunctionQuery)
@ -1054,7 +1054,7 @@ endobj
119 0 obj 119 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 343.296 554.4 451.956 542.4 ] /Rect [ 355.632 424.066 464.292 412.066 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://wiki.apache.org/solr/StatsComponent) /A << /URI (http://wiki.apache.org/solr/StatsComponent)
@ -1065,7 +1065,7 @@ endobj
120 0 obj 120 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 478.284 554.4 508.932 542.4 ] /Rect [ 490.62 424.066 521.268 412.066 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://wiki.apache.org/solr/ClusteringComponent) /A << /URI (http://wiki.apache.org/solr/ClusteringComponent)
@ -1076,7 +1076,7 @@ endobj
121 0 obj 121 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 90.0 541.2 171.66 529.2 ] /Rect [ 90.0 410.866 171.66 398.866 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://wiki.apache.org/solr/ClusteringComponent) /A << /URI (http://wiki.apache.org/solr/ClusteringComponent)
@ -1087,7 +1087,7 @@ endobj
122 0 obj 122 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 236.316 541.2 283.32 529.2 ] /Rect [ 236.316 410.866 283.32 398.866 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (http://wiki.apache.org/solr/FrontPage) /A << /URI (http://wiki.apache.org/solr/FrontPage)
@ -1098,7 +1098,7 @@ endobj
123 0 obj 123 0 obj
<< /Type /Annot << /Type /Annot
/Subtype /Link /Subtype /Link
/Rect [ 490.476 541.2 528.456 529.2 ] /Rect [ 472.14 410.866 510.12 398.866 ]
/C [ 0 0 0 ] /C [ 0 0 0 ]
/Border [ 0 0 0 ] /Border [ 0 0 0 ]
/A << /URI (features.html) /A << /URI (features.html)
@ -1271,7 +1271,7 @@ endobj
1 0 obj 1 0 obj
<< /Type /Pages << /Type /Pages
/Count 9 /Count 9
/Kids [6 0 R 37 0 R 44 0 R 49 0 R 62 0 R 70 0 R 87 0 R 98 0 R 114 0 R ] >> /Kids [6 0 R 37 0 R 44 0 R 49 0 R 62 0 R 70 0 R 87 0 R 98 0 R 112 0 R ] >>
endobj endobj
2 0 obj 2 0 obj
<< /Type /Catalog << /Type /Catalog
@ -1336,7 +1336,7 @@ endobj
25 0 obj 25 0 obj
<< <<
/S /GoTo /S /GoTo
/D [70 0 R /XYZ 85.0 300.947 null] /D [70 0 R /XYZ 85.0 287.747 null]
>> >>
endobj endobj
27 0 obj 27 0 obj
@ -1360,13 +1360,13 @@ endobj
33 0 obj 33 0 obj
<< <<
/S /GoTo /S /GoTo
/D [98 0 R /XYZ 85.0 436.2 null] /D [98 0 R /XYZ 85.0 296.2 null]
>> >>
endobj endobj
35 0 obj 35 0 obj
<< <<
/S /GoTo /S /GoTo
/D [98 0 R /XYZ 85.0 181.347 null] /D [112 0 R /XYZ 85.0 573.0 null]
>> >>
endobj endobj
124 0 obj 124 0 obj
@ -1377,151 +1377,151 @@ endobj
xref xref
0 146 0 146
0000000000 65535 f 0000000000 65535 f
0000042796 00000 n 0000044007 00000 n
0000042911 00000 n 0000044122 00000 n
0000043004 00000 n 0000044215 00000 n
0000000015 00000 n 0000000015 00000 n
0000000071 00000 n 0000000071 00000 n
0000000980 00000 n 0000000982 00000 n
0000001100 00000 n 0000001102 00000 n
0000001216 00000 n 0000001218 00000 n
0000043157 00000 n 0000044368 00000 n
0000001351 00000 n 0000001353 00000 n
0000043220 00000 n 0000044431 00000 n
0000001487 00000 n 0000001489 00000 n
0000043286 00000 n 0000044497 00000 n
0000001624 00000 n 0000001626 00000 n
0000043352 00000 n 0000044563 00000 n
0000001761 00000 n 0000001763 00000 n
0000043416 00000 n 0000044627 00000 n
0000001897 00000 n 0000001899 00000 n
0000043481 00000 n 0000044692 00000 n
0000002034 00000 n 0000002036 00000 n
0000043545 00000 n 0000044756 00000 n
0000002170 00000 n 0000002172 00000 n
0000043611 00000 n 0000044822 00000 n
0000002306 00000 n 0000002308 00000 n
0000043675 00000 n 0000044886 00000 n
0000002443 00000 n 0000002445 00000 n
0000043741 00000 n 0000044952 00000 n
0000002580 00000 n 0000002582 00000 n
0000043805 00000 n 0000045016 00000 n
0000002717 00000 n 0000002719 00000 n
0000043871 00000 n 0000045082 00000 n
0000002854 00000 n 0000002856 00000 n
0000043937 00000 n 0000045148 00000 n
0000002991 00000 n 0000002993 00000 n
0000044001 00000 n 0000045212 00000 n
0000003128 00000 n 0000003130 00000 n
0000005628 00000 n 0000005630 00000 n
0000005751 00000 n 0000005753 00000 n
0000005799 00000 n 0000005801 00000 n
0000006019 00000 n 0000006021 00000 n
0000006197 00000 n 0000006199 00000 n
0000006394 00000 n 0000006396 00000 n
0000006596 00000 n 0000006598 00000 n
0000009011 00000 n 0000009013 00000 n
0000009134 00000 n 0000009136 00000 n
0000009168 00000 n 0000009170 00000 n
0000009351 00000 n 0000009353 00000 n
0000009568 00000 n 0000009570 00000 n
0000012873 00000 n 0000012956 00000 n
0000012996 00000 n 0000013079 00000 n
0000013086 00000 n 0000013169 00000 n
0000013281 00000 n 0000013364 00000 n
0000013473 00000 n 0000013556 00000 n
0000013670 00000 n 0000013753 00000 n
0000013887 00000 n 0000013970 00000 n
0000014083 00000 n 0000014166 00000 n
0000014270 00000 n 0000014353 00000 n
0000014458 00000 n 0000014541 00000 n
0000014662 00000 n 0000014745 00000 n
0000014846 00000 n 0000014929 00000 n
0000015039 00000 n 0000015122 00000 n
0000017830 00000 n 0000018033 00000 n
0000017953 00000 n 0000018156 00000 n
0000018008 00000 n 0000018211 00000 n
0000018201 00000 n 0000018404 00000 n
0000018401 00000 n 0000018604 00000 n
0000018607 00000 n 0000018810 00000 n
0000018805 00000 n 0000019008 00000 n
0000019009 00000 n 0000019210 00000 n
0000021774 00000 n 0000022068 00000 n
0000021897 00000 n 0000022191 00000 n
0000022015 00000 n 0000022309 00000 n
0000022226 00000 n 0000022520 00000 n
0000022443 00000 n 0000022737 00000 n
0000022654 00000 n 0000022948 00000 n
0000022885 00000 n 0000023179 00000 n
0000023092 00000 n 0000023386 00000 n
0000023282 00000 n 0000023576 00000 n
0000023502 00000 n 0000023796 00000 n
0000023721 00000 n 0000024015 00000 n
0000023953 00000 n 0000024247 00000 n
0000024172 00000 n 0000024466 00000 n
0000024404 00000 n 0000024698 00000 n
0000024645 00000 n 0000024939 00000 n
0000024900 00000 n 0000025194 00000 n
0000025104 00000 n 0000025398 00000 n
0000027563 00000 n 0000027857 00000 n
0000027686 00000 n 0000027980 00000 n
0000027762 00000 n 0000028056 00000 n
0000028006 00000 n 0000028300 00000 n
0000028270 00000 n 0000028564 00000 n
0000028557 00000 n 0000028851 00000 n
0000028931 00000 n 0000029225 00000 n
0000029131 00000 n 0000029425 00000 n
0000029334 00000 n 0000029628 00000 n
0000029534 00000 n 0000029828 00000 n
0000029719 00000 n 0000030013 00000 n
0000032745 00000 n 0000033373 00000 n
0000032868 00000 n 0000033496 00000 n
0000032992 00000 n 0000033604 00000 n
0000033208 00000 n 0000033791 00000 n
0000033419 00000 n 0000033975 00000 n
0000033653 00000 n 0000034191 00000 n
0000033871 00000 n 0000034402 00000 n
0000034083 00000 n 0000034636 00000 n
0000034270 00000 n 0000034854 00000 n
0000034454 00000 n 0000035066 00000 n
0000034664 00000 n 0000035276 00000 n
0000034864 00000 n 0000035476 00000 n
0000035098 00000 n 0000035710 00000 n
0000035346 00000 n 0000035958 00000 n
0000035618 00000 n 0000038183 00000 n
0000036048 00000 n 0000038309 00000 n
0000037710 00000 n 0000038410 00000 n
0000037836 00000 n 0000038678 00000 n
0000037921 00000 n 0000039104 00000 n
0000038090 00000 n 0000039277 00000 n
0000038286 00000 n 0000039477 00000 n
0000038478 00000 n 0000039672 00000 n
0000038671 00000 n 0000039869 00000 n
0000038869 00000 n 0000040070 00000 n
0000039063 00000 n 0000040268 00000 n
0000039250 00000 n 0000040459 00000 n
0000044067 00000 n 0000045277 00000 n
0000039414 00000 n 0000040625 00000 n
0000039556 00000 n 0000040767 00000 n
0000039738 00000 n 0000040949 00000 n
0000039937 00000 n 0000041148 00000 n
0000040124 00000 n 0000041335 00000 n
0000040353 00000 n 0000041564 00000 n
0000040520 00000 n 0000041731 00000 n
0000040749 00000 n 0000041960 00000 n
0000040881 00000 n 0000042092 00000 n
0000041063 00000 n 0000042274 00000 n
0000041256 00000 n 0000042467 00000 n
0000041419 00000 n 0000042630 00000 n
0000041653 00000 n 0000042864 00000 n
0000041855 00000 n 0000043066 00000 n
0000042015 00000 n 0000043226 00000 n
0000042129 00000 n 0000043340 00000 n
0000042240 00000 n 0000043451 00000 n
0000042349 00000 n 0000043560 00000 n
0000042462 00000 n 0000043673 00000 n
0000042569 00000 n 0000043780 00000 n
0000042686 00000 n 0000043897 00000 n
trailer trailer
<< <<
/Size 146 /Size 146
@ -1529,5 +1529,5 @@ trailer
/Info 4 0 R /Info 4 0 R
>> >>
startxref startxref
44121 45331
%%EOF %%EOF

View File

@ -46,12 +46,17 @@ import java.io.StringReader;
* @version $Id$ * @version $Id$
*/ */
public class TextField extends FieldType { public class TextField extends FieldType {
protected boolean autoGeneratePhraseQueries = true; protected boolean autoGeneratePhraseQueries;
@Override @Override
protected void init(IndexSchema schema, Map<String,String> args) { protected void init(IndexSchema schema, Map<String,String> args) {
properties |= TOKENIZED; properties |= TOKENIZED;
if (schema.getVersion()> 1.1f) properties &= ~OMIT_TF_POSITIONS; if (schema.getVersion()> 1.1f) properties &= ~OMIT_TF_POSITIONS;
if (schema.getVersion() > 1.3f) {
autoGeneratePhraseQueries = false;
} else {
autoGeneratePhraseQueries = true;
}
String autoGeneratePhraseQueriesStr = args.remove("autoGeneratePhraseQueries"); String autoGeneratePhraseQueriesStr = args.remove("autoGeneratePhraseQueries");
if (autoGeneratePhraseQueriesStr != null) if (autoGeneratePhraseQueriesStr != null)
autoGeneratePhraseQueries = Boolean.parseBoolean(autoGeneratePhraseQueriesStr); autoGeneratePhraseQueries = Boolean.parseBoolean(autoGeneratePhraseQueriesStr);

View File

@ -210,9 +210,9 @@ SimplePostTool: COMMITting Solr index changes..
<p> <p>
You may have noticed that even though the file <code>solr.xml</code> has now You may have noticed that even though the file <code>solr.xml</code> has now
been POSTed to the server twice, you still only get 1 result when searching for been POSTed to the server twice, you still only get 1 result when searching for
"solr". This is because the example schema.xml specifies a "uniqueKey" field "solr". This is because the example <code>schema.xml</code> specifies a "<code>uniqueKey</code>" field
called "<code>id</code>". Whenever you POST instructions to Solr to add a called "<code>id</code>". Whenever you POST instructions to Solr to add a
document with the same value for the uniqueKey as an existing document, it document with the same value for the <code>uniqueKey</code> as an existing document, it
automatically replaces it for you. You can see that that has happened by automatically replaces it for you. You can see that that has happened by
looking at the values for <code>numDocs</code> and <code>maxDoc</code> in the looking at the values for <code>numDocs</code> and <code>maxDoc</code> in the
"CORE"/searcher section of the statistics page... </p> "CORE"/searcher section of the statistics page... </p>
@ -221,13 +221,13 @@ looking at the values for <code>numDocs</code> and <code>maxDoc</code> in the
</p> </p>
<p> <p>
<strong>numDocs</strong> represents the number of searchable documents in the <strong><code>numDocs</code></strong> represents the number of searchable documents in the
index (and will be larger than the number of XML files since some files index (and will be larger than the number of XML files since some files
contained more than one <code>&lt;doc&gt;</code>). <strong>maxDoc</strong> contained more than one <code>&lt;doc&gt;</code>). <strong><code>maxDoc</code></strong>
may be larger as the maxDoc count includes logically deleted documents that may be larger as the <code>maxDoc</code> count includes logically deleted documents that
have not yet been removed from the index. You can re-post the sample XML have not yet been removed from the index. You can re-post the sample XML
files over and over again as much as you want and numDocs will never files over and over again as much as you want and <code>numDocs</code> will never
increase,because the new documents will constantly be replacing the old. increase, because the new documents will constantly be replacing the old.
</p> </p>
<p> <p>
Go ahead and edit the existing XML files to change some of the data, and re-run Go ahead and edit the existing XML files to change some of the data, and re-run
@ -246,7 +246,7 @@ in subsequent searches.
<p>Now if you go to the <a href="http://localhost:8983/solr/admin/stats.jsp">statistics</a> page and scroll down <p>Now if you go to the <a href="http://localhost:8983/solr/admin/stats.jsp">statistics</a> page and scroll down
to the UPDATE_HANDLERS section and verify that "<code>deletesById : 1</code>"</p> to the UPDATE_HANDLERS section and verify that "<code>deletesById : 1</code>"</p>
<p>If you search for <a href="http://localhost:8983/solr/select?q=id:SP2514N">id:SP2514N</a> it will still be found, <p>If you search for <a href="http://localhost:8983/solr/select?q=id:SP2514N">id:SP2514N</a> it will still be found,
because index changes are not visible until, and a new searcher is opened. To cause because index changes are not visible until changes are committed and a new searcher is opened. To cause
this to happen, send a commit command to Solr (post.jar does this for you by default):</p> this to happen, send a commit command to Solr (post.jar does this for you by default):</p>
<source>java -jar post.jar</source> <source>java -jar post.jar</source>
<p>Now re-execute the previous search and verify that no matching documents are found. Also revisit the <p>Now re-execute the previous search and verify that no matching documents are found. Also revisit the
@ -256,7 +256,7 @@ in subsequent searches.
<source>java -Ddata=args -jar post.jar "&lt;delete>&lt;query>name:DDR&lt;/query>&lt;/delete>"</source> <source>java -Ddata=args -jar post.jar "&lt;delete>&lt;query>name:DDR&lt;/query>&lt;/delete>"</source>
<p>Commit can be an expensive operation so it's best to make many changes to an index in a batch and <p>Commit can be an expensive operation so it's best to make many changes to an index in a batch and
then send the commit command at the end. There is also an optimize command that does the same thing as commit, then send the <code>commit</code> command at the end. There is also an <code>optimize</code> command that does the same thing as <code>commit</code>,
in addition to merging all index segments into a single segment, making it faster to search and causing any in addition to merging all index segments into a single segment, making it faster to search and causing any
deleted documents to be removed. All of the update commands are documented <a href="http://wiki.apache.org/solr/UpdateXmlMessages">here</a>. deleted documents to be removed. All of the update commands are documented <a href="http://wiki.apache.org/solr/UpdateXmlMessages">here</a>.
</p> </p>
@ -272,10 +272,10 @@ in subsequent searches.
<title>Querying Data</title> <title>Querying Data</title>
<p> <p>
Searches are done via HTTP GET on the select URL with the query string in the q parameter. Searches are done via HTTP GET on the <code>select</code> URL with the query string in the <code>q</code> parameter.
You can pass a number of optional <a href="http://wiki.apache.org/solr/StandardRequestHandler">request parameters</a> You can pass a number of optional <a href="http://wiki.apache.org/solr/StandardRequestHandler">request parameters</a>
to the request handler to control what information is returned. For example, you can use the "fl" parameter to the request handler to control what information is returned. For example, you can use the "<code>fl</code>" parameter
to control what stored fields are returned, and if the relevancy score is returned... to control what stored fields are returned, and if the relevancy score is returned:
</p> </p>
<ul> <ul>
@ -288,7 +288,7 @@ in subsequent searches.
<p> <p>
Solr provides a <a href="http://localhost:8983/solr/admin/form.jsp">query form</a> within the web admin interface Solr provides a <a href="http://localhost:8983/solr/admin/form.jsp">query form</a> within the web admin interface
that allows setting the various request parameters and is useful when trying out or debugging queries. that allows setting the various request parameters and is useful when testing or debugging queries.
</p> </p>
<section> <section>
@ -296,7 +296,7 @@ in subsequent searches.
<p> <p>
Solr provides a simple method to sort on one or more indexed fields. Solr provides a simple method to sort on one or more indexed fields.
Use the 'sort' parameter to specify "field direction" pairs... Use the "<code>sort</code>' parameter to specify "field direction" pairs, separated by commas if there's more than one sort field:
</p> </p>
<ul> <ul>
@ -306,7 +306,7 @@ in subsequent searches.
</ul> </ul>
<p> <p>
"score" can also be used as a field name when specifying a sort... "<code>score</code>" can also be used as a field name when specifying a sort:
</p> </p>
<ul> <ul>
<li><a href="http://localhost:8983/solr/select/?indent=on&amp;q=video&amp;sort=score+desc">q=video&amp;sort=score desc</a></li> <li><a href="http://localhost:8983/solr/select/?indent=on&amp;q=video&amp;sort=score+desc">q=video&amp;sort=score desc</a></li>
@ -314,7 +314,7 @@ in subsequent searches.
</ul> </ul>
<p> <p>
Complex functions may also be used to sort results... Complex functions may also be used to sort results:
</p> </p>
<ul> <ul>
<li><a href="http://localhost:8983/solr/select/?indent=on&amp;q=*:*&amp;sort=div(popularity,add(price,1))+desc">q=video&amp;sort=div(popularity,add(price,1)) desc</a></li> <li><a href="http://localhost:8983/solr/select/?indent=on&amp;q=*:*&amp;sort=div(popularity,add(price,1))+desc">q=video&amp;sort=div(popularity,add(price,1)) desc</a></li>
@ -334,7 +334,7 @@ in subsequent searches.
<title>Highlighting</title> <title>Highlighting</title>
<p> <p>
Hit highlighting returns relevent snippets of each returned document, and highlights Hit highlighting returns relevent snippets of each returned document, and highlights
keywords from the query within those context snippets. terms from the query within those context snippets.
</p> </p>
<p> <p>
The following example searches for <code>video card</code> and requests The following example searches for <code>video card</code> and requests
@ -429,41 +429,51 @@ in subsequent searches.
<title>Text Analysis</title> <title>Text Analysis</title>
<p> <p>
Text fields are typically indexed by breaking the field into words and applying various transformations such as Text fields are typically indexed by breaking the text into words and applying various transformations such as
lowercasing, removing plurals, or stemming to increase relevancy. The same text transformations are normally lowercasing, removing plurals, or stemming to increase relevancy. The same text transformations are normally
applied to any queries in order to match what is indexed. applied to any queries in order to match what is indexed.
</p> </p>
<p>Example queries demonstrating relevancy improving transformations:</p>
<ul>
<li>A search for
<a href="http://localhost:8983/solr/select/?indent=on&amp;q=power-shot&amp;fl=name">power-shot</a>
matches <code>PowerShot</code>, and
<a href="http://localhost:8983/solr/select/?indent=on&amp;q=adata&amp;fl=name">adata</a>
matches <code>A-DATA</code> due to the use of WordDelimiterFilter and LowerCaseFilter.
</li>
<li>A search for
<a href="http://localhost:8983/solr/select/?indent=on&amp;q=features:recharging&amp;fl=name,features">features:recharging</a>
matches <code>Rechargeable</code> due to stemming with the EnglishPorterFilter.
</li>
<li>A search for
<a href="http://localhost:8983/solr/select/?indent=on&amp;q=&quot;1 gigabyte&quot;&amp;fl=name">"1 gigabyte"</a>
matches things with <code>GB</code>, and the misspelled
<a href="http://localhost:8983/solr/select/?indent=on&amp;q=pixima&amp;fl=name">pixima</a>
matches <code>Pixma</code> due to use of a SynonymFilter.
</li>
</ul>
<p> <p>
The <a href="http://wiki.apache.org/solr/SchemaXml">schema</a> defines The <a href="http://wiki.apache.org/solr/SchemaXml">schema</a> defines
the fields in the index and what type of analysis is applied to them. The current schema your server is using the fields in the index and what type of analysis is applied to them. The current schema your server is using
may be accessed via the <code>[SCHEMA]</code> link on the <a href="http://localhost:8983/solr/admin/">admin</a> page. may be accessed via the <code>[SCHEMA]</code> link on the <a href="http://localhost:8983/solr/admin/">admin</a> page.
</p> </p>
<p>
The best analysis components (tokenization and filtering) for your textual content depends heavily on language.
As you can see in the above <code>[SCHEMA]</code> link, the fields in the example schema are using a <code>fieldType</code>
named <code>text_general</code>, which has defaults appropriate for all languages.
</p>
<p>
If you know your textual content is English, as is the case for the example documents in this tutorial,
and you'd like to apply English-specific stemming and stop word removal, as well as split compound words, you can use the <code>text_en_splitting</code> fieldType instead.
Go ahead and edit the <code>schema.xml</code> under the <code>solr/example/solr/conf</code> directory,
and change the <code>type</code> for fields <code>text</code> and <code>features</code> from <code>text_general</code> to <code>text_en_splitting</code>.
Restart the server and then re-post all of the documents, and then these queries will show the English-specific transformations:
</p>
<ul>
<li>A search for
<a href="http://localhost:8983/solr/select/?indent=on&amp;q=power-shot&amp;fl=name">power-shot</a>
matches <code>PowerShot</code>, and
<a href="http://localhost:8983/solr/select/?indent=on&amp;q=adata&amp;fl=name">adata</a>
matches <code>A-DATA</code> due to the use of <code>WordDelimiterFilter</code> and <code>LowerCaseFilter</code>.
</li>
<li>A search for
<a href="http://localhost:8983/solr/select/?indent=on&amp;q=features:recharging&amp;fl=name,features">features:recharging</a>
matches <code>Rechargeable</code> due to stemming with the <code>EnglishPorterFilter</code>.
</li>
<li>A search for
<a href="http://localhost:8983/solr/select/?indent=on&amp;q=&quot;1 gigabyte&quot;&amp;fl=name">"1 gigabyte"</a>
matches things with <code>GB</code>, and the misspelled
<a href="http://localhost:8983/solr/select/?indent=on&amp;q=pixima&amp;fl=name">pixima</a>
matches <code>Pixma</code> due to use of a <code>SynonymFilter</code>.
</li>
</ul>
<p>A full description of the analysis components, Analyzers, Tokenizers, and TokenFilters <p>A full description of the analysis components, Analyzers, Tokenizers, and TokenFilters
available for use is <a href="http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters">here</a>. available for use is <a href="http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters">here</a>.
@ -479,7 +489,7 @@ in subsequent searches.
<p> <p>
<a href="http://localhost:8983/solr/admin/analysis.jsp?name=name&amp;val=Canon+Power-Shot+SD500">This</a> <a href="http://localhost:8983/solr/admin/analysis.jsp?name=name&amp;val=Canon+Power-Shot+SD500">This</a>
shows how "<code>Canon Power-Shot SD500</code>" would be indexed as a value in the name field. Each row of shows how "<code>Canon Power-Shot SD500</code>" would be indexed as a value in the name field. Each row of
the table shows the resulting tokens after having passed through the next TokenFilter in the Analyzer for the <code>name</code> field. the table shows the resulting tokens after having passed through the next <code>TokenFilter</code> in the analyzer for the <code>name</code> field.
Notice how both <code>powershot</code> and <code>power</code>, <code>shot</code> are indexed. Tokens generated at the same position Notice how both <code>powershot</code> and <code>power</code>, <code>shot</code> are indexed. Tokens generated at the same position
are shown in the same column, in this case <code>shot</code> and <code>powershot</code>. are shown in the same column, in this case <code>shot</code> and <code>powershot</code>.
</p> </p>
@ -501,27 +511,26 @@ in subsequent searches.
<title>Conclusion</title> <title>Conclusion</title>
<p> <p>
Congratulations! You successfully ran a small Solr instance, added some Congratulations! You successfully ran a small Solr instance, added some
documents, and made changes to the index. You learned about queries, text documents, and made changes to the index and schema. You learned about queries, text
analysis, and the Solr admin interface. You're ready to start using Solr on analysis, and the Solr admin interface. You're ready to start using Solr on
your own project! Continue on with the following steps: your own project! Continue on with the following steps:
</p> </p>
<ul> <ul>
<li>Subscribe to the Solr <a href="mailing_lists.html">mailing lists</a>!</li> <li>Subscribe to the Solr <a href="mailing_lists.html">mailing lists</a>!</li>
<li>Make a copy of the Solr example directory as a template for your project.</li> <li>Make a copy of the Solr <code>example</code> directory as a template for your project.</li>
<li>Customize the schema and other config in solr/conf/ to meet your needs.</li> <li>Customize the schema and other config in <code>solr/conf/</code> to meet your needs.</li>
</ul> </ul>
<p> <p>
Solr as a ton of other features that we haven't touched on here, including Solr has a ton of other features that we haven't touched on here, including
<a href="http://wiki.apache.org/solr/DistributedSearch">distributed search</a> <a href="http://wiki.apache.org/solr/DistributedSearch">distributed search</a>
to handle huge document collections, to handle huge document collections,
<a href="http://wiki.apache.org/solr/FunctionQuery">function queries</a>, <a href="http://wiki.apache.org/solr/FunctionQuery">function queries</a>,
<a href="http://wiki.apache.org/solr/StatsComponent">numeric field statistics</a>, <a href="http://wiki.apache.org/solr/StatsComponent">numeric field statistics</a>,
and and
<a href="http://wiki.apache.org/solr/ClusteringComponent">search results clustering</a>. <a href="http://wiki.apache.org/solr/ClusteringComponent">search results clustering</a>.
Explore the <a href="http://wiki.apache.org/solr/FrontPage">Solr Wiki</a> to find out Explore the <a href="http://wiki.apache.org/solr/FrontPage">Solr Wiki</a> to find
more details about Solr's many more details about Solr's many <a href="features.html">features</a>.
<a href="features.html">features</a>.
</p> </p>
<p> <p>

View File

@ -28,7 +28,7 @@
$Name: $ $Name: $
--> -->
<schema name="test" version="1.2"> <schema name="test" version="1.4">
<types> <types>
<!-- field type definitions... note that the "name" attribute is <!-- field type definitions... note that the "name" attribute is
@ -104,7 +104,7 @@
<!-- HighlitText optimizes storage for (long) columns which will be highlit --> <!-- HighlitText optimizes storage for (long) columns which will be highlit -->
<fieldtype name="highlittext" class="solr.TextField" compressThreshold="345" /> <fieldtype name="highlittext" class="solr.TextField"/>
<fieldtype name="boolean" class="solr.BoolField" sortMissingLast="true"/> <fieldtype name="boolean" class="solr.BoolField" sortMissingLast="true"/>
<fieldtype name="string" class="solr.StrField" sortMissingLast="true"/> <fieldtype name="string" class="solr.StrField" sortMissingLast="true"/>
@ -116,7 +116,7 @@
<fieldtype name="tdate" class="solr.TrieDateField" sortMissingLast="true" precisionStep="6"/> <fieldtype name="tdate" class="solr.TrieDateField" sortMissingLast="true" precisionStep="6"/>
<fieldtype name="pdate" class="solr.DateField" sortMissingLast="true"/> <fieldtype name="pdate" class="solr.DateField" sortMissingLast="true"/>
<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true" >
<analyzer type="index"> <analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/> <tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" <filter class="solr.StopFilterFactory"
@ -146,7 +146,7 @@
<!-- field type that doesn't generate phrases from unquoted multiple tokens per analysis unit --> <!-- field type that doesn't generate phrases from unquoted multiple tokens per analysis unit -->
<fieldType name="text_np" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false" > <fieldType name="text_np" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index"> <analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/> <tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" <filter class="solr.StopFilterFactory"

View File

@ -889,13 +889,10 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
assertQ(req("id:42 AND subword:\"bar foo\"") assertQ(req("id:42 AND subword:\"bar foo\"")
,"*[count(//doc)=0]" ,"*[count(//doc)=0]"
); );
assertQ(req("id:42 AND subword:bar-foo")
,"*[count(//doc)=0]"
);
assertQ(req("id:42 AND subword:\"bar foo\"~2") assertQ(req("id:42 AND subword:\"bar foo\"~2")
,"*[count(//doc)=1]" ,"*[count(//doc)=1]"
); );
assertQ(req("id:42 AND subword:foo/bar") assertQ(req("id:42 AND subword:\"foo/bar\"")
,"*[count(//doc)=1]" ,"*[count(//doc)=1]"
); );
assertQ(req("id:42 AND subword:foobar") assertQ(req("id:42 AND subword:foobar")
@ -916,13 +913,10 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
assertQ(req("id:42 AND subword:\"bar foo\"") assertQ(req("id:42 AND subword:\"bar foo\"")
,"*[count(//doc)=0]" ,"*[count(//doc)=0]"
); );
assertQ(req("id:42 AND subword:bar-foo")
,"*[count(//doc)=0]"
);
assertQ(req("id:42 AND subword:\"bar foo\"~2") assertQ(req("id:42 AND subword:\"bar foo\"~2")
,"*[count(//doc)=1]" ,"*[count(//doc)=1]"
); );
assertQ(req("id:42 AND subword:foo/bar") assertQ(req("id:42 AND subword:\"foo/bar\"")
,"*[count(//doc)=1]" ,"*[count(//doc)=1]"
); );
assertQ(req("id:42 AND subword:foobar") assertQ(req("id:42 AND subword:foobar")

View File

@ -20,7 +20,6 @@ package org.apache.solr.client.solrj;
import java.io.IOException; import java.io.IOException;
import java.io.StringWriter; import java.io.StringWriter;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -912,11 +911,33 @@ abstract public class SolrExampleTests extends SolrJettyTestBase
// Make sure the transformer works for streaming // Make sure the transformer works for streaming
Float score = (Float)doc.get( "score" ); Float score = (Float)doc.get( "score" );
Integer docid = (Integer)doc.get( "_docid_" );
assertEquals( "should have score", new Float(1.0), score ); assertEquals( "should have score", new Float(1.0), score );
} }
}); });
assertEquals(10, cnt.get() ); assertEquals(10, cnt.get() );
} }
@Test
public void testChineseDefaults() throws Exception {
// Empty the database...
server.deleteByQuery( "*:*" );// delete everything!
server.commit();
assertNumFound( "*:*", 0 ); // make sure it got in
// Beijing medical University
UpdateRequest req = new UpdateRequest();
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", "42");
doc.addField("text", "北京医科大学");
req.add(doc);
req.setAction(ACTION.COMMIT, true, true );
req.process( server );
// Beijing university should match:
SolrQuery query = new SolrQuery("北京大学");
QueryResponse rsp = server.query( query );
assertEquals(1, rsp.getResults().getNumFound());
}
} }