mirror of https://github.com/apache/lucene.git
Remove contrib/velocity directory as it has been moved to core
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@955797 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e2b625af45
commit
44355bd648
|
@ -1,136 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
contributor license agreements. See the NOTICE file distributed with
|
|
||||||
this work for additional information regarding copyright ownership.
|
|
||||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
the "License"); you may not use this file except in compliance with
|
|
||||||
the License. You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<project name="solr-velocity" default="build">
|
|
||||||
|
|
||||||
<property name="solr-path" value="../.." />
|
|
||||||
|
|
||||||
<import file="../../common-build.xml"/>
|
|
||||||
|
|
||||||
<description>
|
|
||||||
Solritas: Velocity Response Writer
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<path id="common.classpath">
|
|
||||||
<pathelement location="${solr-path}/build/solrj" />
|
|
||||||
<pathelement location="${solr-path}/build/solr" />
|
|
||||||
<fileset dir="src/main/solr/lib" includes="*.jar"/>
|
|
||||||
<fileset dir="${solr-path}/lib" includes="*.jar"></fileset>
|
|
||||||
<path refid="lucene.classpath"/>
|
|
||||||
</path>
|
|
||||||
|
|
||||||
<path id="test.classpath">
|
|
||||||
<path refid="common.classpath" />
|
|
||||||
<pathelement path="target/classes" />
|
|
||||||
<pathelement path="target/test-classes" />
|
|
||||||
<pathelement path="${java.class.path}"/>
|
|
||||||
</path>
|
|
||||||
|
|
||||||
<target name="clean">
|
|
||||||
<delete failonerror="false" dir="target"/>
|
|
||||||
<delete>
|
|
||||||
<fileset dir="src/main/solr/lib" includes="apache-solr-velocity-*.jar"/>
|
|
||||||
</delete>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="init">
|
|
||||||
<mkdir dir="target/classes"/>
|
|
||||||
<mkdir dir="${build.javadoc}" />
|
|
||||||
<ant dir="../../" inheritall="false" target="compile" />
|
|
||||||
<ant dir="../../" inheritall="false" target="make-manifest" />
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="compile" depends="init">
|
|
||||||
<solr-javac destdir="target/classes"
|
|
||||||
classpathref="common.classpath">
|
|
||||||
<src path="src/main/java" />
|
|
||||||
</solr-javac>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="build" depends="compile">
|
|
||||||
<solr-jar destfile="src/main/solr/lib/${fullnamever}.jar" basedir="target/classes"
|
|
||||||
manifest="../../${dest}/META-INF/MANIFEST.MF">
|
|
||||||
<fileset dir="src/main/java" excludes="**/*.java"/>
|
|
||||||
</solr-jar>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="compileTests" depends="compile">
|
|
||||||
<solr-javac destdir="target/test-classes"
|
|
||||||
classpathref="test.classpath">
|
|
||||||
<src path="src/test" />
|
|
||||||
</solr-javac>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="test" depends="compileTests">
|
|
||||||
<mkdir dir="${junit.output.dir}"/>
|
|
||||||
|
|
||||||
<junit printsummary="true" showoutput="true"
|
|
||||||
haltonfailure="no"
|
|
||||||
maxmemory="512M"
|
|
||||||
errorProperty="tests.failed"
|
|
||||||
failureProperty="tests.failed"
|
|
||||||
dir="src/main"
|
|
||||||
tempdir="${junit.output.dir}"
|
|
||||||
>
|
|
||||||
<sysproperty key="java.util.logging.config.file" value="${common-solr.dir}/testlogging.properties"/>
|
|
||||||
<formatter type="brief" usefile="false"/>
|
|
||||||
<classpath refid="test.classpath"/>
|
|
||||||
<assertions>
|
|
||||||
<enable package="org.apache.lucene"/>
|
|
||||||
<enable package="org.apache.solr"/>
|
|
||||||
</assertions>
|
|
||||||
<!--<formatter type="xml" usefile="false"/>-->
|
|
||||||
<batchtest fork="yes" todir="${junit.output.dir}" unless="testcase">
|
|
||||||
<fileset dir="src/test" includes="${junit.includes}"/>
|
|
||||||
</batchtest>
|
|
||||||
<batchtest fork="yes" todir="${junit.output.dir}" if="testcase">
|
|
||||||
<fileset dir="src/test" includes="**/${testcase}.java"/>
|
|
||||||
</batchtest>
|
|
||||||
</junit>
|
|
||||||
|
|
||||||
<fail if="tests.failed">Tests failed!</fail>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="dist" depends="build" />
|
|
||||||
|
|
||||||
<target name="javadoc">
|
|
||||||
<sequential>
|
|
||||||
<mkdir dir="${build.javadoc}/contrib-${name}"/>
|
|
||||||
|
|
||||||
<path id="javadoc.classpath">
|
|
||||||
<path refid="common.classpath"/>
|
|
||||||
</path>
|
|
||||||
|
|
||||||
<invoke-javadoc
|
|
||||||
destdir="${build.javadoc}/contrib-${name}"
|
|
||||||
title="${Name} ${version} contrib-${fullnamever} API">
|
|
||||||
<sources>
|
|
||||||
<packageset dir="src/main/java"/>
|
|
||||||
</sources>
|
|
||||||
</invoke-javadoc>
|
|
||||||
</sequential>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="run">
|
|
||||||
<!-- TODO: Autolaunch Solr -->
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="example" depends="build"/>
|
|
||||||
|
|
||||||
</project>
|
|
|
@ -1,61 +0,0 @@
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Licensed to the Apache Software Foundation (ASF) under one
|
|
||||||
or more contributor license agreements. See the NOTICE file
|
|
||||||
distributed with this work for additional information
|
|
||||||
regarding copyright ownership. The ASF licenses this file
|
|
||||||
to you under the Apache License, Version 2.0 (the
|
|
||||||
"License"); you may not use this file except in compliance
|
|
||||||
with the License. You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing,
|
|
||||||
software distributed under the License is distributed on an
|
|
||||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
KIND, either express or implied. See the License for the
|
|
||||||
specific language governing permissions and limitations
|
|
||||||
under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
|
|
||||||
<parent>
|
|
||||||
<groupId>org.apache.solr</groupId>
|
|
||||||
<artifactId>solr-parent</artifactId>
|
|
||||||
<version>@version@</version>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<groupId>org.apache.solr</groupId>
|
|
||||||
<artifactId>solr-velocity</artifactId>
|
|
||||||
<name>Apache Solr Velocity Extension</name>
|
|
||||||
<version>@version@</version>
|
|
||||||
<description>Apache Solr Velocity Extension adds support for integrating Solr and Velocity</description>
|
|
||||||
<packaging>jar</packaging>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>commons-lang</groupId>
|
|
||||||
<artifactId>commons-lang</artifactId>
|
|
||||||
<version>2.4</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>commons-beanutils</groupId>
|
|
||||||
<artifactId>commons-beanutils</artifactId>
|
|
||||||
<version>1.7.0</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.velocity</groupId>
|
|
||||||
<artifactId>velocity</artifactId>
|
|
||||||
<version>1.6.1</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.velocity</groupId>
|
|
||||||
<artifactId>velocity-tools</artifactId>
|
|
||||||
<version>2.0-beta3</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
</project>
|
|
|
@ -1,8 +0,0 @@
|
||||||
## This template currently lives in the java src/ tree as an example of templates being loaded from the classpath
|
|
||||||
|
|
||||||
#if($params.getBool("debugQuery",false))
|
|
||||||
#parse("debug.vm")
|
|
||||||
#end
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
Generated by <a href="http://wiki.apache.org/solr/VelocityResponseWriter">VelocityResponseWriter</a>
|
|
|
@ -1,31 +0,0 @@
|
||||||
<!--
|
|
||||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
contributor license agreements. See the NOTICE file distributed with
|
|
||||||
this work for additional information regarding copyright ownership.
|
|
||||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
(the "License"); you may not use this file except in compliance with
|
|
||||||
the License. You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- The content of this page will be statically included into the top
|
|
||||||
of the admin page. Uncomment this as an example to see there the content
|
|
||||||
will show up.
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<i>This line will appear before the first table</i>
|
|
||||||
<tr>
|
|
||||||
<td colspan="2">
|
|
||||||
This row will be appended to the end of the first table
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
-->
|
|
|
@ -1,36 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<!--
|
|
||||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
contributor license agreements. See the NOTICE file distributed with
|
|
||||||
this work for additional information regarding copyright ownership.
|
|
||||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
(the "License"); you may not use this file except in compliance with
|
|
||||||
the License. You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- If this file is found in the config directory, it will only be
|
|
||||||
loaded once at startup. If it is found in Solr's data
|
|
||||||
directory, it will be re-loaded every commit.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<elevate>
|
|
||||||
<query text="foo bar">
|
|
||||||
<doc id="1" />
|
|
||||||
<doc id="2" />
|
|
||||||
<doc id="3" />
|
|
||||||
</query>
|
|
||||||
|
|
||||||
<query text="ipod">
|
|
||||||
<doc id="MA147LL/A" /> <!-- put the actual ipod at the top -->
|
|
||||||
<doc id="IW-02" exclude="true" /> <!-- exclude this cable -->
|
|
||||||
</query>
|
|
||||||
|
|
||||||
</elevate>
|
|
|
@ -1,21 +0,0 @@
|
||||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
# (the "License"); you may not use this file except in compliance with
|
|
||||||
# the License. You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
|
||||||
# Use a protected word file to protect against the stemmer reducing two
|
|
||||||
# unrelated words to the same base word.
|
|
||||||
|
|
||||||
# Some non-words that normally won't be encountered,
|
|
||||||
# just to test that they won't be stemmed.
|
|
||||||
dontstems
|
|
||||||
zwhacky
|
|
||||||
|
|
|
@ -1,521 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<!--
|
|
||||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
contributor license agreements. See the NOTICE file distributed with
|
|
||||||
this work for additional information regarding copyright ownership.
|
|
||||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
(the "License"); you may not use this file except in compliance with
|
|
||||||
the License. You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!--
|
|
||||||
This is the Solr schema file. This file should be named "schema.xml" and
|
|
||||||
should be in the conf directory under the solr home
|
|
||||||
(i.e. ./solr/conf/schema.xml by default)
|
|
||||||
or located where the classloader for the Solr webapp can find it.
|
|
||||||
|
|
||||||
This example schema is the recommended starting point for users.
|
|
||||||
It should be kept correct and concise, usable out-of-the-box.
|
|
||||||
|
|
||||||
For more information, on how to customize this file, please see
|
|
||||||
http://wiki.apache.org/solr/SchemaXml
|
|
||||||
|
|
||||||
PERFORMANCE NOTE: this schema includes many optional features and should not
|
|
||||||
be used for benchmarking. To improve performance one could
|
|
||||||
- set stored="false" for all fields possible (esp large fields) when you
|
|
||||||
only need to search on the field but don't need to return the original
|
|
||||||
value.
|
|
||||||
- set indexed="false" if you don't need to search on the field, but only
|
|
||||||
return the field as a result of searching on other indexed fields.
|
|
||||||
- remove all unneeded copyField statements
|
|
||||||
- for best index size and searching performance, set "index" to false
|
|
||||||
for all general text fields, use copyField to copy them to the
|
|
||||||
catchall "text" field, and use that for searching.
|
|
||||||
- For maximum indexing performance, use the StreamingUpdateSolrServer
|
|
||||||
java client.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<schema name="example" version="1.2">
|
|
||||||
<!-- 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.
|
|
||||||
version="1.2" is Solr's version number for the schema syntax and semantics. It should
|
|
||||||
not normally be changed by applications.
|
|
||||||
1.0: multiValued attribute did not exist, all fields are multiValued by nature
|
|
||||||
1.1: multiValued attribute introduced, false by default
|
|
||||||
1.2: omitTermFreqAndPositions attribute introduced, true by default except for text fields.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<types>
|
|
||||||
<!-- field type definitions. The "name" attribute is
|
|
||||||
just a label to be used by field definitions. The "class"
|
|
||||||
attribute and any other attributes determine the real
|
|
||||||
behavior of the fieldType.
|
|
||||||
Class names starting with "solr" refer to java classes in the
|
|
||||||
org.apache.solr.analysis package.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- The StrField type is not analyzed, but indexed/stored verbatim.
|
|
||||||
- StrField and TextField support an optional compressThreshold which
|
|
||||||
limits compression (if enabled in the derived fields) to values which
|
|
||||||
exceed a certain size (in characters).
|
|
||||||
-->
|
|
||||||
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
|
|
||||||
|
|
||||||
<!-- boolean type: "true" or "false" -->
|
|
||||||
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/>
|
|
||||||
|
|
||||||
<!-- The optional sortMissingLast and sortMissingFirst attributes are
|
|
||||||
currently supported on types that are sorted internally as strings.
|
|
||||||
This includes "string","boolean","sint","slong","sfloat","sdouble","pdate"
|
|
||||||
- If sortMissingLast="true", then a sort on this field will cause documents
|
|
||||||
without the field to come after documents with the field,
|
|
||||||
regardless of the requested sort order (asc or desc).
|
|
||||||
- If sortMissingFirst="true", then a sort on this field will cause documents
|
|
||||||
without the field to come before documents with the field,
|
|
||||||
regardless of the requested sort order.
|
|
||||||
- If sortMissingLast="false" and sortMissingFirst="false" (the default),
|
|
||||||
then default lucene sorting will be used which places docs without the
|
|
||||||
field first in an ascending sort and last in a descending sort.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
|
|
||||||
Note: the statistics component does not yet work with these field types.
|
|
||||||
-->
|
|
||||||
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
|
|
||||||
<fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
|
|
||||||
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
|
|
||||||
<fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Numeric field types that index each value at various levels of precision
|
|
||||||
to accelerate range queries when the number of values between the range
|
|
||||||
endpoints is large. See the javadoc for NumericRangeQuery for internal
|
|
||||||
implementation details.
|
|
||||||
|
|
||||||
Smaller precisionStep values (specified in bits) will lead to more tokens
|
|
||||||
indexed per value, slightly larger index size, and faster range queries.
|
|
||||||
|
|
||||||
Note: faceting does not currently work for these fields.
|
|
||||||
-->
|
|
||||||
<fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
|
|
||||||
<fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
|
|
||||||
<fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
|
|
||||||
<fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
|
|
||||||
|
|
||||||
<!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and
|
|
||||||
is a more restricted form of the canonical representation of dateTime
|
|
||||||
http://www.w3.org/TR/xmlschema-2/#dateTime
|
|
||||||
The trailing "Z" designates UTC time and is mandatory.
|
|
||||||
Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
|
|
||||||
All other components are mandatory.
|
|
||||||
|
|
||||||
Expressions can also be used to denote calculations that should be
|
|
||||||
performed relative to "NOW" to determine the value, ie...
|
|
||||||
|
|
||||||
NOW/HOUR
|
|
||||||
... Round to the start of the current hour
|
|
||||||
NOW-1DAY
|
|
||||||
... Exactly 1 day prior to now
|
|
||||||
NOW/DAY+6MONTHS+3DAYS
|
|
||||||
... 6 months and 3 days in the future from the start of
|
|
||||||
the current day
|
|
||||||
|
|
||||||
Consult the DateField javadocs for more information.
|
|
||||||
-->
|
|
||||||
<fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="0" positionIncrementGap="0"/>
|
|
||||||
|
|
||||||
<!-- A Trie based date field for faster date range queries and date faceting. -->
|
|
||||||
<fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- plain numeric field types that store and index the text
|
|
||||||
value verbatim (and hence don't support range queries, since the
|
|
||||||
lexicographic ordering isn't equal to the numeric ordering)
|
|
||||||
These should only be used for compatibility with existing indexes.
|
|
||||||
Use Trie based fields instead.
|
|
||||||
-->
|
|
||||||
<fieldType name="pint" class="solr.IntField" omitNorms="true"/>
|
|
||||||
<fieldType name="plong" class="solr.LongField" omitNorms="true"/>
|
|
||||||
<fieldType name="pfloat" class="solr.FloatField" omitNorms="true"/>
|
|
||||||
<fieldType name="pdouble" class="solr.DoubleField" omitNorms="true"/>
|
|
||||||
<fieldType name="pdate" class="solr.DateField" sortMissingLast="true" omitNorms="true"/>
|
|
||||||
|
|
||||||
|
|
||||||
<!--
|
|
||||||
These types should only be used for back compatibility with existing
|
|
||||||
indexes, or if "sortMissingLast" functionality is needed. Use Trie based fields instead.
|
|
||||||
-->
|
|
||||||
<fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>
|
|
||||||
<fieldType name="slong" class="solr.SortableLongField" sortMissingLast="true" omitNorms="true"/>
|
|
||||||
<fieldType name="sfloat" class="solr.SortableFloatField" sortMissingLast="true" omitNorms="true"/>
|
|
||||||
<fieldType name="sdouble" class="solr.SortableDoubleField" sortMissingLast="true" omitNorms="true"/>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- The "RandomSortField" is not used to store or search any
|
|
||||||
data. You can declare fields of this type it in your schema
|
|
||||||
to generate pseudo-random orderings of your docs for sorting
|
|
||||||
purposes. The ordering is generated based on the field name
|
|
||||||
and the version of the index, As long as the index version
|
|
||||||
remains unchanged, and the same field name is reused,
|
|
||||||
the ordering of the docs will be consistent.
|
|
||||||
If you want different psuedo-random orderings of documents,
|
|
||||||
for the same version of the index, use a dynamicField and
|
|
||||||
change the name
|
|
||||||
-->
|
|
||||||
<fieldType name="random" class="solr.RandomSortField" indexed="true" />
|
|
||||||
|
|
||||||
<!-- solr.TextField allows the specification of custom text analyzers
|
|
||||||
specified as a tokenizer and a list of token filters. Different
|
|
||||||
analyzers may be specified for indexing and querying.
|
|
||||||
|
|
||||||
The optional positionIncrementGap puts space between multiple fields of
|
|
||||||
this type on the same document, with the purpose of preventing false phrase
|
|
||||||
matching across fields.
|
|
||||||
|
|
||||||
For more info on customizing your analyzer chain, please see
|
|
||||||
http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- One can also specify an existing Analyzer class that has a
|
|
||||||
default constructor via the class attribute on the analyzer element
|
|
||||||
<fieldType name="text_greek" class="solr.TextField">
|
|
||||||
<analyzer class="org.apache.lucene.analysis.el.GreekAnalyzer"/>
|
|
||||||
</fieldType>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- A text field that only splits on whitespace for exact matching of words -->
|
|
||||||
<fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
|
|
||||||
<analyzer>
|
|
||||||
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
|
||||||
</analyzer>
|
|
||||||
</fieldType>
|
|
||||||
|
|
||||||
<!-- A text field that uses WordDelimiterFilter to enable splitting and matching of
|
|
||||||
words on case-change, alpha numeric boundaries, and non-alphanumeric chars,
|
|
||||||
so that a query of "wifi" or "wi fi" could match a document containing "Wi-Fi".
|
|
||||||
Synonyms and stopwords are customized by external files, and stemming is enabled.
|
|
||||||
-->
|
|
||||||
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
|
|
||||||
<analyzer type="index">
|
|
||||||
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
|
||||||
<!-- 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.txt"
|
|
||||||
enablePositionIncrements="true"
|
|
||||||
/>
|
|
||||||
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
|
|
||||||
<filter class="solr.LowerCaseFilterFactory"/>
|
|
||||||
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
|
|
||||||
<filter class="solr.PorterStemFilterFactory"/>
|
|
||||||
</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="1"/>
|
|
||||||
<filter class="solr.LowerCaseFilterFactory"/>
|
|
||||||
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
|
|
||||||
<filter class="solr.PorterStemFilterFactory"/>
|
|
||||||
</analyzer>
|
|
||||||
</fieldType>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- 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. -->
|
|
||||||
<fieldType name="textTight" class="solr.TextField" positionIncrementGap="100" >
|
|
||||||
<analyzer>
|
|
||||||
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
|
||||||
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
|
|
||||||
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
|
|
||||||
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
|
|
||||||
<filter class="solr.LowerCaseFilterFactory"/>
|
|
||||||
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
|
|
||||||
<filter class="solr.PorterStemFilterFactory"/>
|
|
||||||
<!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
|
|
||||||
possible with WordDelimiterFilter in conjuncton with stemming. -->
|
|
||||||
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
|
|
||||||
</analyzer>
|
|
||||||
</fieldType>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- A general unstemmed text field - good if one does not know the language of the field -->
|
|
||||||
<fieldType name="textgen" class="solr.TextField" positionIncrementGap="100">
|
|
||||||
<analyzer type="index">
|
|
||||||
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
|
||||||
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false" />
|
|
||||||
<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>
|
|
||||||
|
|
||||||
<!-- charFilter + WhitespaceTokenizer -->
|
|
||||||
<!--
|
|
||||||
<fieldType name="textCharNorm" class="solr.TextField" positionIncrementGap="100" >
|
|
||||||
<analyzer>
|
|
||||||
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
|
|
||||||
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
|
||||||
</analyzer>
|
|
||||||
</fieldType>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- This is an example of using the KeywordTokenizer along
|
|
||||||
With various TokenFilterFactories to produce a sortable field
|
|
||||||
that does not include some properties of the source text
|
|
||||||
-->
|
|
||||||
<fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
|
|
||||||
<analyzer>
|
|
||||||
<!-- KeywordTokenizer does no actual tokenizing, so the entire
|
|
||||||
input string is preserved as a single token
|
|
||||||
-->
|
|
||||||
<tokenizer class="solr.KeywordTokenizerFactory"/>
|
|
||||||
<!-- The LowerCase TokenFilter does what you expect, which can be
|
|
||||||
when you want your sorting to be case insensitive
|
|
||||||
-->
|
|
||||||
<filter class="solr.LowerCaseFilterFactory" />
|
|
||||||
<!-- The TrimFilter removes any leading or trailing whitespace -->
|
|
||||||
<filter class="solr.TrimFilterFactory" />
|
|
||||||
<!-- The PatternReplaceFilter gives you the flexibility to use
|
|
||||||
Java Regular expression to replace any sequence of characters
|
|
||||||
matching a pattern with an arbitrary replacement string,
|
|
||||||
which may include back references to portions of the original
|
|
||||||
string matched by the pattern.
|
|
||||||
|
|
||||||
See the Java Regular Expression documentation for more
|
|
||||||
information on pattern and replacement string syntax.
|
|
||||||
|
|
||||||
http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/package-summary.html
|
|
||||||
-->
|
|
||||||
<filter class="solr.PatternReplaceFilterFactory"
|
|
||||||
pattern="([^a-z])" replacement="" replace="all"
|
|
||||||
/>
|
|
||||||
</analyzer>
|
|
||||||
</fieldType>
|
|
||||||
|
|
||||||
<fieldtype name="phonetic" stored="false" indexed="true" class="solr.TextField" >
|
|
||||||
<analyzer>
|
|
||||||
<tokenizer class="solr.StandardTokenizerFactory"/>
|
|
||||||
<filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
|
|
||||||
</analyzer>
|
|
||||||
</fieldtype>
|
|
||||||
|
|
||||||
<fieldtype name="payloads" stored="false" indexed="true" class="solr.TextField" >
|
|
||||||
<analyzer>
|
|
||||||
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
|
||||||
<!--
|
|
||||||
The DelimitedPayloadTokenFilter can put payloads on tokens... for example,
|
|
||||||
a token of "foo|1.4" would be indexed as "foo" with a payload of 1.4f
|
|
||||||
Attributes of the DelimitedPayloadTokenFilterFactory :
|
|
||||||
"delimiter" - a one character delimiter. Default is | (pipe)
|
|
||||||
"encoder" - how to encode the following value into a playload
|
|
||||||
float -> org.apache.lucene.analysis.payloads.FloatEncoder,
|
|
||||||
integer -> o.a.l.a.p.IntegerEncoder
|
|
||||||
identity -> o.a.l.a.p.IdentityEncoder
|
|
||||||
Fully Qualified class name implementing PayloadEncoder, Encoder must have a no arg constructor.
|
|
||||||
-->
|
|
||||||
<filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>
|
|
||||||
</analyzer>
|
|
||||||
</fieldtype>
|
|
||||||
|
|
||||||
<!-- lowercases the entire field value, keeping it as a single token. -->
|
|
||||||
<fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
|
|
||||||
<analyzer>
|
|
||||||
<tokenizer class="solr.KeywordTokenizerFactory"/>
|
|
||||||
<filter class="solr.LowerCaseFilterFactory" />
|
|
||||||
</analyzer>
|
|
||||||
</fieldType>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- since fields of this type are by default not stored or indexed,
|
|
||||||
any data added to them will be ignored outright. -->
|
|
||||||
<fieldtype name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField" />
|
|
||||||
|
|
||||||
<fieldType name="html_text" class="solr.TextField">
|
|
||||||
<analyzer>
|
|
||||||
<charFilter class="solr.HTMLStripCharFilterFactory"/>
|
|
||||||
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
|
||||||
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
|
|
||||||
</analyzer>
|
|
||||||
</fieldType>
|
|
||||||
|
|
||||||
</types>
|
|
||||||
|
|
||||||
|
|
||||||
<fields>
|
|
||||||
<!-- Valid attributes for fields:
|
|
||||||
name: mandatory - the name for the field
|
|
||||||
type: mandatory - the name of a previously defined type from the
|
|
||||||
<types> section
|
|
||||||
indexed: true if this field should be indexed (searchable or sortable)
|
|
||||||
stored: true if this field should be retrievable
|
|
||||||
compressed: [false] if this field should be stored using gzip compression
|
|
||||||
(this will only apply if the field type is compressable; among
|
|
||||||
the standard field types, only TextField and StrField are)
|
|
||||||
multiValued: true if this field may contain multiple values per document
|
|
||||||
omitNorms: (expert) set to true to omit the norms associated with
|
|
||||||
this field (this disables length normalization and index-time
|
|
||||||
boosting for the field, and saves some memory). Only full-text
|
|
||||||
fields or fields that need an index-time boost need norms.
|
|
||||||
termVectors: [false] set to true to store the term vector for a
|
|
||||||
given field.
|
|
||||||
When using MoreLikeThis, fields used for similarity should be
|
|
||||||
stored for best performance.
|
|
||||||
termPositions: Store position information with the term vector.
|
|
||||||
This will increase storage costs.
|
|
||||||
termOffsets: Store offset information with the term vector. This
|
|
||||||
will increase storage costs.
|
|
||||||
default: a value that should be used if no value is specified
|
|
||||||
when adding a document.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<field name="id" type="string" indexed="true" stored="true" required="true" />
|
|
||||||
<field name="sku" type="textTight" indexed="true" stored="true" omitNorms="true"/>
|
|
||||||
<field name="name" type="textgen" indexed="true" stored="true"/>
|
|
||||||
<field name="alphaNameSort" type="alphaOnlySort" indexed="true" stored="false"/>
|
|
||||||
<field name="manu" type="textgen" indexed="true" stored="true" omitNorms="true"/>
|
|
||||||
<field name="cat" type="text_ws" indexed="true" stored="true" multiValued="true" omitNorms="true" />
|
|
||||||
<field name="features" type="text" indexed="true" stored="true" multiValued="true"/>
|
|
||||||
<field name="includes" type="text" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" />
|
|
||||||
|
|
||||||
<field name="weight" type="float" indexed="true" stored="true"/>
|
|
||||||
<field name="price" type="float" indexed="true" stored="true"/>
|
|
||||||
<field name="popularity" type="int" indexed="true" stored="true" />
|
|
||||||
<field name="inStock" type="boolean" indexed="true" stored="true" />
|
|
||||||
|
|
||||||
|
|
||||||
<field name="title" type="text" indexed="true" stored="true"/>
|
|
||||||
|
|
||||||
<!-- catchall field, containing all other searchable text fields (implemented
|
|
||||||
via copyField further on in this schema -->
|
|
||||||
<field name="text" type="text" indexed="true" stored="false" multiValued="true"/>
|
|
||||||
|
|
||||||
<!-- non-tokenized version of manufacturer to make it easier to sort or group
|
|
||||||
results by manufacturer. copied from "manu" via copyField -->
|
|
||||||
<field name="manu_exact" type="string" indexed="true" stored="false"/>
|
|
||||||
|
|
||||||
<field name="payloads" type="payloads" indexed="true" stored="true"/>
|
|
||||||
|
|
||||||
<!-- Uncommenting the following will create a "timestamp" field using
|
|
||||||
a default value of "NOW" to indicate when each document was indexed.
|
|
||||||
-->
|
|
||||||
<!--
|
|
||||||
<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
|
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Dynamic field definitions. If a field name is not found, dynamicFields
|
|
||||||
will be used if the name matches any of the patterns.
|
|
||||||
RESTRICTION: the glob-like pattern in the name attribute must have
|
|
||||||
a "*" only at the start or the end.
|
|
||||||
EXAMPLE: name="*_i" will match any field ending in _i (like myid_i, z_i)
|
|
||||||
Longer patterns will be matched first. if equal size patterns
|
|
||||||
both match, the first appearing in the schema will be used. -->
|
|
||||||
<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
|
|
||||||
<dynamicField name="*_s" type="string" indexed="true" stored="true"/>
|
|
||||||
<dynamicField name="*_l" type="long" indexed="true" stored="true"/>
|
|
||||||
<dynamicField name="*_t" type="text" indexed="true" stored="true"/>
|
|
||||||
<dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>
|
|
||||||
<dynamicField name="*_f" type="float" indexed="true" stored="true"/>
|
|
||||||
<dynamicField name="*_d" type="double" indexed="true" stored="true"/>
|
|
||||||
<dynamicField name="*_dt" type="date" indexed="true" stored="true"/>
|
|
||||||
|
|
||||||
<!-- some trie-coded dynamic fields for faster range queries -->
|
|
||||||
<dynamicField name="*_ti" type="tint" indexed="true" stored="true"/>
|
|
||||||
<dynamicField name="*_tl" type="tlong" indexed="true" stored="true"/>
|
|
||||||
<dynamicField name="*_tf" type="tfloat" indexed="true" stored="true"/>
|
|
||||||
<dynamicField name="*_td" type="tdouble" indexed="true" stored="true"/>
|
|
||||||
<dynamicField name="*_tdt" type="tdate" indexed="true" stored="true"/>
|
|
||||||
|
|
||||||
<dynamicField name="*_pi" type="pint" indexed="true" stored="true"/>
|
|
||||||
|
|
||||||
<dynamicField name="ignored_*" type="ignored" multiValued="true"/>
|
|
||||||
<dynamicField name="attr_*" type="textgen" indexed="true" stored="true" multiValued="true"/>
|
|
||||||
|
|
||||||
<dynamicField name="random_*" type="random" />
|
|
||||||
|
|
||||||
<!-- uncomment the following to ignore any fields that don't already match an existing
|
|
||||||
field name or dynamic field, rather than reporting them as an error.
|
|
||||||
alternately, change the type="ignored" to some other type e.g. "text" if you want
|
|
||||||
unknown fields indexed and/or stored by default -->
|
|
||||||
<!--dynamicField name="*" type="ignored" multiValued="true" /-->
|
|
||||||
|
|
||||||
</fields>
|
|
||||||
|
|
||||||
<!-- Field to use to determine and enforce document uniqueness.
|
|
||||||
Unless this field is marked with required="false", it will be a required field
|
|
||||||
-->
|
|
||||||
<uniqueKey>id</uniqueKey>
|
|
||||||
|
|
||||||
<!-- field for the QueryParser to use when an explicit fieldname is absent -->
|
|
||||||
<defaultSearchField>text</defaultSearchField>
|
|
||||||
|
|
||||||
<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
|
|
||||||
<solrQueryParser defaultOperator="OR"/>
|
|
||||||
|
|
||||||
<!-- copyField commands copy one field to another at the time a document
|
|
||||||
is added to the index. It's used either to index the same field differently,
|
|
||||||
or to add multiple fields to the same field for easier/faster searching. -->
|
|
||||||
|
|
||||||
<copyField source="cat" dest="text"/>
|
|
||||||
<copyField source="name" dest="text"/>
|
|
||||||
<copyField source="manu" dest="text"/>
|
|
||||||
<copyField source="features" dest="text"/>
|
|
||||||
<copyField source="includes" dest="text"/>
|
|
||||||
<copyField source="manu" dest="manu_exact"/>
|
|
||||||
|
|
||||||
<!-- Above, multiple source fields are copied to the [text] field.
|
|
||||||
Another way to map multiple source fields to the same
|
|
||||||
destination field is to use the dynamic field syntax.
|
|
||||||
copyField also supports a maxChars to copy setting. -->
|
|
||||||
|
|
||||||
<!-- <copyField source="*_t" dest="text" maxChars="3000"/> -->
|
|
||||||
|
|
||||||
<!-- copy name to alphaNameSort, a field designed for sorting by name -->
|
|
||||||
<!-- <copyField source="name" dest="alphaNameSort"/> -->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Similarity is the scoring routine for each document vs. a query.
|
|
||||||
A custom similarity may be specified here, but the default is fine
|
|
||||||
for most applications. -->
|
|
||||||
<!-- <similarity class="org.apache.lucene.search.DefaultSimilarity"/> -->
|
|
||||||
<!-- ... OR ...
|
|
||||||
Specify a SimilarityFactory class name implementation
|
|
||||||
allowing parameters to be used.
|
|
||||||
-->
|
|
||||||
<!--
|
|
||||||
<similarity class="com.example.solr.CustomSimilarityFactory">
|
|
||||||
<str name="paramkey">param value</str>
|
|
||||||
</similarity>
|
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
</schema>
|
|
|
@ -1,24 +0,0 @@
|
||||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
# contributor license agreements. See the NOTICE file distributed with
|
|
||||||
# this work for additional information regarding copyright ownership.
|
|
||||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
# (the "License"); you may not use this file except in compliance with
|
|
||||||
# the License. You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
user=
|
|
||||||
solr_hostname=localhost
|
|
||||||
solr_port=8983
|
|
||||||
rsyncd_port=18983
|
|
||||||
data_dir=
|
|
||||||
webapp_name=solr
|
|
||||||
master_host=
|
|
||||||
master_data_dir=
|
|
||||||
master_status_dir=
|
|
|
@ -1,779 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<!--
|
|
||||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
contributor license agreements. See the NOTICE file distributed with
|
|
||||||
this work for additional information regarding copyright ownership.
|
|
||||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
(the "License"); you may not use this file except in compliance with
|
|
||||||
the License. You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<config>
|
|
||||||
<!-- Set this to 'false' if you want solr to continue working after it has
|
|
||||||
encountered an severe configuration error. In a production environment,
|
|
||||||
you may want solr to keep working even if one handler is mis-configured.
|
|
||||||
|
|
||||||
You may also set this to false using by setting the system property:
|
|
||||||
-Dsolr.abortOnConfigurationError=false
|
|
||||||
-->
|
|
||||||
<abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError>
|
|
||||||
|
|
||||||
<!-- Used to specify an alternate directory to hold all index data
|
|
||||||
other than the default ./data under the Solr home.
|
|
||||||
If replication is in use, this should match the replication configuration. -->
|
|
||||||
<dataDir>${solr.data.dir:./solr/data}</dataDir>
|
|
||||||
|
|
||||||
|
|
||||||
<indexDefaults>
|
|
||||||
<!-- Values here affect all index writers and act as a default unless overridden. -->
|
|
||||||
<useCompoundFile>false</useCompoundFile>
|
|
||||||
|
|
||||||
<mergeFactor>10</mergeFactor>
|
|
||||||
<!--
|
|
||||||
If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush based on whichever limit is hit first.
|
|
||||||
|
|
||||||
-->
|
|
||||||
<!--<maxBufferedDocs>1000</maxBufferedDocs>-->
|
|
||||||
<!-- Tell Lucene when to flush documents to disk.
|
|
||||||
Giving Lucene more memory for indexing means faster indexing at the cost of more RAM
|
|
||||||
|
|
||||||
If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush based on whichever limit is hit first.
|
|
||||||
|
|
||||||
-->
|
|
||||||
<ramBufferSizeMB>32</ramBufferSizeMB>
|
|
||||||
<maxMergeDocs>2147483647</maxMergeDocs>
|
|
||||||
<maxFieldLength>10000</maxFieldLength>
|
|
||||||
<writeLockTimeout>1000</writeLockTimeout>
|
|
||||||
<commitLockTimeout>10000</commitLockTimeout>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Expert:
|
|
||||||
The Merge Policy in Lucene controls how merging is handled by Lucene. The default in 2.3 is the LogByteSizeMergePolicy, previous
|
|
||||||
versions used LogDocMergePolicy.
|
|
||||||
|
|
||||||
LogByteSizeMergePolicy chooses segments to merge based on their size. The Lucene 2.2 default, LogDocMergePolicy chose when
|
|
||||||
to merge based on number of documents
|
|
||||||
|
|
||||||
Other implementations of MergePolicy must have a no-argument constructor
|
|
||||||
-->
|
|
||||||
<!--<mergePolicy>org.apache.lucene.index.LogByteSizeMergePolicy</mergePolicy>-->
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Expert:
|
|
||||||
The Merge Scheduler in Lucene controls how merges are performed. The ConcurrentMergeScheduler (Lucene 2.3 default)
|
|
||||||
can perform merges in the background using separate threads. The SerialMergeScheduler (Lucene 2.2 default) does not.
|
|
||||||
-->
|
|
||||||
<!--<mergeScheduler>org.apache.lucene.index.ConcurrentMergeScheduler</mergeScheduler>-->
|
|
||||||
|
|
||||||
<!--
|
|
||||||
This option specifies which Lucene LockFactory implementation to use.
|
|
||||||
|
|
||||||
single = SingleInstanceLockFactory - suggested for a read-only index
|
|
||||||
or when there is no possibility of another process trying
|
|
||||||
to modify the index.
|
|
||||||
native = NativeFSLockFactory
|
|
||||||
simple = SimpleFSLockFactory
|
|
||||||
|
|
||||||
(For backwards compatibility with Solr 1.2, 'simple' is the default
|
|
||||||
if not specified.)
|
|
||||||
-->
|
|
||||||
<lockType>single</lockType>
|
|
||||||
</indexDefaults>
|
|
||||||
|
|
||||||
<mainIndex>
|
|
||||||
<!-- options specific to the main on-disk lucene index -->
|
|
||||||
<useCompoundFile>false</useCompoundFile>
|
|
||||||
<ramBufferSizeMB>32</ramBufferSizeMB>
|
|
||||||
<mergeFactor>10</mergeFactor>
|
|
||||||
<!-- Deprecated -->
|
|
||||||
<!--<maxBufferedDocs>1000</maxBufferedDocs>-->
|
|
||||||
<maxMergeDocs>2147483647</maxMergeDocs>
|
|
||||||
<maxFieldLength>10000</maxFieldLength>
|
|
||||||
|
|
||||||
<!-- If true, unlock any held write or commit locks on startup.
|
|
||||||
This defeats the locking mechanism that allows multiple
|
|
||||||
processes to safely access a lucene index, and should be
|
|
||||||
used with care.
|
|
||||||
This is not needed if lock type is 'none' or 'single'
|
|
||||||
-->
|
|
||||||
<unlockOnStartup>false</unlockOnStartup>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Custom deletion policies can specified here. The class must
|
|
||||||
implement org.apache.lucene.index.IndexDeletionPolicy.
|
|
||||||
|
|
||||||
http://lucene.apache.org/java/2_3_2/api/org/apache/lucene/index/IndexDeletionPolicy.html
|
|
||||||
|
|
||||||
The standard Solr IndexDeletionPolicy implementation supports deleting
|
|
||||||
index commit points on number of commits, age of commit point and
|
|
||||||
optimized status.
|
|
||||||
|
|
||||||
The latest commit point should always be preserved regardless
|
|
||||||
of the criteria.
|
|
||||||
-->
|
|
||||||
<deletionPolicy class="solr.SolrDeletionPolicy">
|
|
||||||
<!-- Keep only optimized commit points -->
|
|
||||||
<str name="keepOptimizedOnly">false</str>
|
|
||||||
<!-- The maximum number of commit points to be kept -->
|
|
||||||
<str name="maxCommitsToKeep">1</str>
|
|
||||||
<!--
|
|
||||||
Delete all commit points once they have reached the given age.
|
|
||||||
Supports DateMathParser syntax e.g.
|
|
||||||
|
|
||||||
<str name="maxCommitAge">30MINUTES</str>
|
|
||||||
<str name="maxCommitAge">1DAY</str>
|
|
||||||
-->
|
|
||||||
</deletionPolicy>
|
|
||||||
|
|
||||||
</mainIndex>
|
|
||||||
|
|
||||||
<!-- Enables JMX if and only if an existing MBeanServer is found, use
|
|
||||||
this if you want to configure JMX through JVM parameters. Remove
|
|
||||||
this to disable exposing Solr configuration and statistics to JMX.
|
|
||||||
|
|
||||||
If you want to connect to a particular server, specify the agentId
|
|
||||||
e.g. <jmx agentId="myAgent" />
|
|
||||||
|
|
||||||
If you want to start a new MBeanServer, specify the serviceUrl
|
|
||||||
e.g <jmx serviceUrl="service:jmx:rmi:///jndi/rmi://localhost:9999/solr" />
|
|
||||||
|
|
||||||
For more details see http://wiki.apache.org/solr/SolrJmx
|
|
||||||
-->
|
|
||||||
<jmx />
|
|
||||||
|
|
||||||
<!-- the default high-performance update handler -->
|
|
||||||
<updateHandler class="solr.DirectUpdateHandler2">
|
|
||||||
|
|
||||||
<!-- A prefix of "solr." for class names is an alias that
|
|
||||||
causes solr to search appropriate packages, including
|
|
||||||
org.apache.solr.(search|update|request|core|analysis)
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- Perform a <commit/> automatically under certain conditions:
|
|
||||||
maxDocs - number of updates since last commit is greater than this
|
|
||||||
maxTime - oldest uncommited update (in ms) is this long ago
|
|
||||||
<autoCommit>
|
|
||||||
<maxDocs>10000</maxDocs>
|
|
||||||
<maxTime>1000</maxTime>
|
|
||||||
</autoCommit>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- The RunExecutableListener executes an external command.
|
|
||||||
exe - the name of the executable to run
|
|
||||||
dir - dir to use as the current working directory. default="."
|
|
||||||
wait - the calling thread waits until the executable returns. default="true"
|
|
||||||
args - the arguments to pass to the program. default=nothing
|
|
||||||
env - environment variables to set. default=nothing
|
|
||||||
-->
|
|
||||||
<!-- A postCommit event is fired after every commit or optimize command
|
|
||||||
<listener event="postCommit" class="solr.RunExecutableListener">
|
|
||||||
<str name="exe">solr/bin/snapshooter</str>
|
|
||||||
<str name="dir">.</str>
|
|
||||||
<bool name="wait">true</bool>
|
|
||||||
<arr name="args"> <str>arg1</str> <str>arg2</str> </arr>
|
|
||||||
<arr name="env"> <str>MYVAR=val1</str> </arr>
|
|
||||||
</listener>
|
|
||||||
-->
|
|
||||||
<!-- A postOptimize event is fired only after every optimize command, useful
|
|
||||||
in conjunction with index distribution to only distribute optimized indicies
|
|
||||||
<listener event="postOptimize" class="solr.RunExecutableListener">
|
|
||||||
<str name="exe">snapshooter</str>
|
|
||||||
<str name="dir">solr/bin</str>
|
|
||||||
<bool name="wait">true</bool>
|
|
||||||
</listener>
|
|
||||||
-->
|
|
||||||
|
|
||||||
</updateHandler>
|
|
||||||
|
|
||||||
|
|
||||||
<query>
|
|
||||||
<!-- Maximum number of clauses in a boolean query... can affect
|
|
||||||
range or prefix queries that expand to big boolean
|
|
||||||
queries. An exception is thrown if exceeded. -->
|
|
||||||
<maxBooleanClauses>1024</maxBooleanClauses>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Cache used by SolrIndexSearcher for filters (DocSets),
|
|
||||||
unordered sets of *all* documents that match a query.
|
|
||||||
When a new searcher is opened, its caches may be prepopulated
|
|
||||||
or "autowarmed" using data from caches in the old searcher.
|
|
||||||
autowarmCount is the number of items to prepopulate. For LRUCache,
|
|
||||||
the autowarmed items will be the most recently accessed items.
|
|
||||||
Parameters:
|
|
||||||
class - the SolrCache implementation (currently only LRUCache)
|
|
||||||
size - the maximum number of entries in the cache
|
|
||||||
initialSize - the initial capacity (number of entries) of
|
|
||||||
the cache. (seel java.util.HashMap)
|
|
||||||
autowarmCount - the number of entries to prepopulate from
|
|
||||||
and old cache.
|
|
||||||
-->
|
|
||||||
<filterCache
|
|
||||||
class="solr.LRUCache"
|
|
||||||
size="512"
|
|
||||||
initialSize="512"
|
|
||||||
autowarmCount="128"/>
|
|
||||||
|
|
||||||
<!-- queryResultCache caches results of searches - ordered lists of
|
|
||||||
document ids (DocList) based on a query, a sort, and the range
|
|
||||||
of documents requested. -->
|
|
||||||
<queryResultCache
|
|
||||||
class="solr.LRUCache"
|
|
||||||
size="512"
|
|
||||||
initialSize="512"
|
|
||||||
autowarmCount="32"/>
|
|
||||||
|
|
||||||
<!-- documentCache caches Lucene Document objects (the stored fields for each document).
|
|
||||||
Since Lucene internal document ids are transient, this cache will not be autowarmed. -->
|
|
||||||
<documentCache
|
|
||||||
class="solr.LRUCache"
|
|
||||||
size="512"
|
|
||||||
initialSize="512"
|
|
||||||
autowarmCount="0"/>
|
|
||||||
|
|
||||||
<!-- If true, stored fields that are not requested will be loaded lazily.
|
|
||||||
|
|
||||||
This can result in a significant speed improvement if the usual case is to
|
|
||||||
not load all stored fields, especially if the skipped fields are large compressed
|
|
||||||
text fields.
|
|
||||||
-->
|
|
||||||
<enableLazyFieldLoading>true</enableLazyFieldLoading>
|
|
||||||
|
|
||||||
<!-- Example of a generic cache. These caches may be accessed by name
|
|
||||||
through SolrIndexSearcher.getCache(),cacheLookup(), and cacheInsert().
|
|
||||||
The purpose is to enable easy caching of user/application level data.
|
|
||||||
The regenerator argument should be specified as an implementation
|
|
||||||
of solr.search.CacheRegenerator if autowarming is desired. -->
|
|
||||||
<!--
|
|
||||||
<cache name="myUserCache"
|
|
||||||
class="solr.LRUCache"
|
|
||||||
size="4096"
|
|
||||||
initialSize="1024"
|
|
||||||
autowarmCount="1024"
|
|
||||||
regenerator="org.mycompany.mypackage.MyRegenerator"
|
|
||||||
/>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- An optimization that attempts to use a filter to satisfy a search.
|
|
||||||
If the requested sort does not include score, then the filterCache
|
|
||||||
will be checked for a filter matching the query. If found, the filter
|
|
||||||
will be used as the source of document ids, and then the sort will be
|
|
||||||
applied to that.
|
|
||||||
<useFilterForSortedQuery>true</useFilterForSortedQuery>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- An optimization for use with the queryResultCache. When a search
|
|
||||||
is requested, a superset of the requested number of document ids
|
|
||||||
are collected. For example, if a search for a particular query
|
|
||||||
requests matching documents 10 through 19, and queryWindowSize is 50,
|
|
||||||
then documents 0 through 49 will be collected and cached. Any further
|
|
||||||
requests in that range can be satisfied via the cache. -->
|
|
||||||
<queryResultWindowSize>50</queryResultWindowSize>
|
|
||||||
|
|
||||||
<!-- Maximum number of documents to cache for any entry in the
|
|
||||||
queryResultCache. -->
|
|
||||||
<queryResultMaxDocsCached>200</queryResultMaxDocsCached>
|
|
||||||
|
|
||||||
<!-- This entry enables an int hash representation for filters (DocSets)
|
|
||||||
when the number of items in the set is less than maxSize. For smaller
|
|
||||||
sets, this representation is more memory efficient, more efficient to
|
|
||||||
iterate over, and faster to take intersections. -->
|
|
||||||
<HashDocSet maxSize="3000" loadFactor="0.75"/>
|
|
||||||
|
|
||||||
<!-- a newSearcher event is fired whenever a new searcher is being prepared
|
|
||||||
and there is a current searcher handling requests (aka registered). -->
|
|
||||||
<!-- QuerySenderListener takes an array of NamedList and executes a
|
|
||||||
local query request for each NamedList in sequence. -->
|
|
||||||
<listener event="newSearcher" class="solr.QuerySenderListener">
|
|
||||||
<arr name="queries">
|
|
||||||
<lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst>
|
|
||||||
<lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst>
|
|
||||||
<lst><str name="q">static newSearcher warming query from solrconfig.xml</str></lst>
|
|
||||||
</arr>
|
|
||||||
</listener>
|
|
||||||
|
|
||||||
<!-- a firstSearcher event is fired whenever a new searcher is being
|
|
||||||
prepared but there is no current registered searcher to handle
|
|
||||||
requests or to gain autowarming data from. -->
|
|
||||||
<listener event="firstSearcher" class="solr.QuerySenderListener">
|
|
||||||
<arr name="queries">
|
|
||||||
<lst> <str name="q">fast_warm</str> <str name="start">0</str> <str name="rows">10</str> </lst>
|
|
||||||
<lst><str name="q">static firstSearcher warming query from solrconfig.xml</str></lst>
|
|
||||||
</arr>
|
|
||||||
</listener>
|
|
||||||
|
|
||||||
<!-- If a search request comes in and there is no current registered searcher,
|
|
||||||
then immediately register the still warming searcher and use it. If
|
|
||||||
"false" then all requests will block until the first searcher is done
|
|
||||||
warming. -->
|
|
||||||
<useColdSearcher>false</useColdSearcher>
|
|
||||||
|
|
||||||
<!-- Maximum number of searchers that may be warming in the background
|
|
||||||
concurrently. An error is returned if this limit is exceeded. Recommend
|
|
||||||
1-2 for read-only slaves, higher for masters w/o cache warming. -->
|
|
||||||
<maxWarmingSearchers>2</maxWarmingSearchers>
|
|
||||||
|
|
||||||
</query>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Let the dispatch filter handler /select?qt=XXX
|
|
||||||
handleSelect=true will use consistent error handling for /select and /update
|
|
||||||
handleSelect=false will use solr1.1 style error formatting
|
|
||||||
-->
|
|
||||||
<requestDispatcher handleSelect="true" >
|
|
||||||
<!--Make sure your system has some authentication before enabling remote streaming! -->
|
|
||||||
<requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048" />
|
|
||||||
|
|
||||||
<!-- Set HTTP caching related parameters (for proxy caches and clients).
|
|
||||||
|
|
||||||
To get the behaviour of Solr 1.2 (ie: no caching related headers)
|
|
||||||
use the never304="true" option and do not specify a value for
|
|
||||||
<cacheControl>
|
|
||||||
-->
|
|
||||||
<!-- <httpCaching never304="true"> -->
|
|
||||||
<httpCaching lastModifiedFrom="openTime"
|
|
||||||
etagSeed="Solr">
|
|
||||||
<!-- lastModFrom="openTime" is the default, the Last-Modified value
|
|
||||||
(and validation against If-Modified-Since requests) will all be
|
|
||||||
relative to when the current Searcher was opened.
|
|
||||||
You can change it to lastModFrom="dirLastMod" if you want the
|
|
||||||
value to exactly corrispond to when the physical index was last
|
|
||||||
modified.
|
|
||||||
|
|
||||||
etagSeed="..." is an option you can change to force the ETag
|
|
||||||
header (and validation against If-None-Match requests) to be
|
|
||||||
differnet even if the index has not changed (ie: when making
|
|
||||||
significant changes to your config file)
|
|
||||||
|
|
||||||
lastModifiedFrom and etagSeed are both ignored if you use the
|
|
||||||
never304="true" option.
|
|
||||||
-->
|
|
||||||
<!-- If you include a <cacheControl> directive, it will be used to
|
|
||||||
generate a Cache-Control header, as well as an Expires header
|
|
||||||
if the value contains "max-age="
|
|
||||||
|
|
||||||
By default, no Cache-Control header is generated.
|
|
||||||
|
|
||||||
You can use the <cacheControl> option even if you have set
|
|
||||||
never304="true"
|
|
||||||
-->
|
|
||||||
<!-- <cacheControl>max-age=30, public</cacheControl> -->
|
|
||||||
</httpCaching>
|
|
||||||
</requestDispatcher>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- requestHandler plugins... incoming queries will be dispatched to the
|
|
||||||
correct handler based on the path or the qt (query type) param.
|
|
||||||
Names starting with a '/' are accessed with the a path equal to the
|
|
||||||
registered name. Names without a leading '/' are accessed with:
|
|
||||||
http://host/app/select?qt=name
|
|
||||||
If no qt is defined, the requestHandler that declares default="true"
|
|
||||||
will be used.
|
|
||||||
-->
|
|
||||||
<requestHandler name="standard" class="solr.SearchHandler" default="true">
|
|
||||||
<!-- default values for query parameters -->
|
|
||||||
<lst name="defaults">
|
|
||||||
<str name="echoParams">explicit</str>
|
|
||||||
<!--
|
|
||||||
<int name="rows">10</int>
|
|
||||||
<str name="fl">*</str>
|
|
||||||
<str name="version">2.1</str>
|
|
||||||
-->
|
|
||||||
</lst>
|
|
||||||
|
|
||||||
</requestHandler>
|
|
||||||
|
|
||||||
<requestHandler name="/mlt" class="solr.MoreLikeThisHandler"/>
|
|
||||||
<requestHandler name="/analysis/field" class="solr.FieldAnalysisRequestHandler" />
|
|
||||||
|
|
||||||
<requestHandler name="/itas" class="solr.SearchHandler">
|
|
||||||
<lst name="defaults">
|
|
||||||
<str name="v.template">browse</str>
|
|
||||||
<str name="v.properties">velocity.properties</str>
|
|
||||||
<str name="title">Solritas</str>
|
|
||||||
|
|
||||||
<str name="wt">velocity</str>
|
|
||||||
<str name="defType">dismax</str>
|
|
||||||
<str name="q.alt">*:*</str>
|
|
||||||
<str name="rows">10</str>
|
|
||||||
<str name="fl">*,score</str>
|
|
||||||
<str name="facet">on</str>
|
|
||||||
<str name="facet.field">cat</str>
|
|
||||||
<str name="facet.mincount">1</str>
|
|
||||||
<str name="qf">
|
|
||||||
text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
|
|
||||||
</str>
|
|
||||||
</lst>
|
|
||||||
<!--<lst name="invariants">-->
|
|
||||||
<!--<str name="v.base_dir">/Users/erik/dev/solr/contrib/velocity/src/main/templates</str>-->
|
|
||||||
<!--</lst>-->
|
|
||||||
</requestHandler>
|
|
||||||
|
|
||||||
<!--Master config-->
|
|
||||||
<!--
|
|
||||||
<requestHandler name="/replication" class="solr.ReplicationHandler" >
|
|
||||||
<lst name="master">
|
|
||||||
<str name="replicateAfter">commit</str>
|
|
||||||
<str name="confFiles">schema.xml,stopwords.txt</str>
|
|
||||||
</lst>
|
|
||||||
</requestHandler>
|
|
||||||
-->
|
|
||||||
<!-- Slave config-->
|
|
||||||
<!--
|
|
||||||
<requestHandler name="/replication" class="solr.ReplicationHandler" >
|
|
||||||
<lst name="slave">
|
|
||||||
<str name="masterUrl">http://localhost:8983/solr/replication</str>
|
|
||||||
<str name="pollInterval">00:00:60</str>
|
|
||||||
</lst>
|
|
||||||
</requestHandler>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- DisMaxRequestHandler allows easy searching across multiple fields
|
|
||||||
for simple user-entered phrases. It's implementation is now
|
|
||||||
just the standard SearchHandler with a default query type
|
|
||||||
of "dismax".
|
|
||||||
see http://wiki.apache.org/solr/DisMaxRequestHandler
|
|
||||||
-->
|
|
||||||
<requestHandler name="dismax" class="solr.SearchHandler" >
|
|
||||||
<lst name="defaults">
|
|
||||||
<str name="defType">dismax</str>
|
|
||||||
<str name="echoParams">explicit</str>
|
|
||||||
<float name="tie">0.01</float>
|
|
||||||
<str name="qf">
|
|
||||||
text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
|
|
||||||
</str>
|
|
||||||
<str name="pf">
|
|
||||||
text^0.2 features^1.1 name^1.5 manu^1.4 manu_exact^1.9
|
|
||||||
</str>
|
|
||||||
<str name="bf">
|
|
||||||
ord(popularity)^0.5 recip(rord(price),1,1000,1000)^0.3
|
|
||||||
</str>
|
|
||||||
<str name="fl">
|
|
||||||
id,name,price,score
|
|
||||||
</str>
|
|
||||||
<str name="mm">
|
|
||||||
2<-1 5<-2 6<90%
|
|
||||||
</str>
|
|
||||||
<int name="ps">100</int>
|
|
||||||
<str name="q.alt">*:*</str>
|
|
||||||
<!-- example highlighter config, enable per-query with hl=true -->
|
|
||||||
<str name="hl.fl">text features name</str>
|
|
||||||
<!-- for this field, we want no fragmenting, just highlighting -->
|
|
||||||
<str name="f.name.hl.fragsize">0</str>
|
|
||||||
<!-- instructs Solr to return the field itself if no query terms are
|
|
||||||
found -->
|
|
||||||
<str name="f.name.hl.alternateField">name</str>
|
|
||||||
<str name="f.text.hl.fragmenter">regex</str> <!-- defined below -->
|
|
||||||
</lst>
|
|
||||||
</requestHandler>
|
|
||||||
|
|
||||||
<!-- Note how you can register the same handler multiple times with
|
|
||||||
different names (and different init parameters)
|
|
||||||
-->
|
|
||||||
<requestHandler name="partitioned" class="solr.SearchHandler" >
|
|
||||||
<lst name="defaults">
|
|
||||||
<str name="defType">dismax</str>
|
|
||||||
<str name="echoParams">explicit</str>
|
|
||||||
<str name="qf">text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0</str>
|
|
||||||
<str name="mm">2<-1 5<-2 6<90%</str>
|
|
||||||
<!-- This is an example of using Date Math to specify a constantly
|
|
||||||
moving date range in a config...
|
|
||||||
-->
|
|
||||||
<str name="bq">incubationdate_dt:[* TO NOW/DAY-1MONTH]^2.2</str>
|
|
||||||
</lst>
|
|
||||||
<!-- In addition to defaults, "appends" params can be specified
|
|
||||||
to identify values which should be appended to the list of
|
|
||||||
multi-val params from the query (or the existing "defaults").
|
|
||||||
|
|
||||||
In this example, the param "fq=instock:true" will be appended to
|
|
||||||
any query time fq params the user may specify, as a mechanism for
|
|
||||||
partitioning the index, independent of any user selected filtering
|
|
||||||
that may also be desired (perhaps as a result of faceted searching).
|
|
||||||
|
|
||||||
NOTE: there is *absolutely* nothing a client can do to prevent these
|
|
||||||
"appends" values from being used, so don't use this mechanism
|
|
||||||
unless you are sure you always want it.
|
|
||||||
-->
|
|
||||||
<lst name="appends">
|
|
||||||
<str name="fq">inStock:true</str>
|
|
||||||
</lst>
|
|
||||||
<!-- "invariants" are a way of letting the Solr maintainer lock down
|
|
||||||
the options available to Solr clients. Any params values
|
|
||||||
specified here are used regardless of what values may be specified
|
|
||||||
in either the query, the "defaults", or the "appends" params.
|
|
||||||
|
|
||||||
In this example, the facet.field and facet.query params are fixed,
|
|
||||||
limiting the facets clients can use. Faceting is not turned on by
|
|
||||||
default - but if the client does specify facet=true in the request,
|
|
||||||
these are the only facets they will be able to see counts for;
|
|
||||||
regardless of what other facet.field or facet.query params they
|
|
||||||
may specify.
|
|
||||||
|
|
||||||
NOTE: there is *absolutely* nothing a client can do to prevent these
|
|
||||||
"invariants" values from being used, so don't use this mechanism
|
|
||||||
unless you are sure you always want it.
|
|
||||||
-->
|
|
||||||
<lst name="invariants">
|
|
||||||
<str name="facet.field">cat</str>
|
|
||||||
<str name="facet.field">manu_exact</str>
|
|
||||||
<str name="facet.query">price:[* TO 500]</str>
|
|
||||||
<str name="facet.query">price:[500 TO *]</str>
|
|
||||||
</lst>
|
|
||||||
</requestHandler>
|
|
||||||
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Search components are registered to SolrCore and used by Search Handlers
|
|
||||||
|
|
||||||
By default, the following components are avaliable:
|
|
||||||
|
|
||||||
<searchComponent name="query" class="org.apache.solr.handler.component.QueryComponent" />
|
|
||||||
<searchComponent name="facet" class="org.apache.solr.handler.component.FacetComponent" />
|
|
||||||
<searchComponent name="mlt" class="org.apache.solr.handler.component.MoreLikeThisComponent" />
|
|
||||||
<searchComponent name="highlight" class="org.apache.solr.handler.component.HighlightComponent" />
|
|
||||||
<searchComponent name="stats" class="org.apache.solr.handler.component.StatsComponent" />
|
|
||||||
<searchComponent name="debug" class="org.apache.solr.handler.component.DebugComponent" />
|
|
||||||
|
|
||||||
Default configuration in a requestHandler would look like:
|
|
||||||
<arr name="components">
|
|
||||||
<str>query</str>
|
|
||||||
<str>facet</str>
|
|
||||||
<str>mlt</str>
|
|
||||||
<str>highlight</str>
|
|
||||||
<str>stats</str>
|
|
||||||
<str>debug</str>
|
|
||||||
</arr>
|
|
||||||
|
|
||||||
If you register a searchComponent to one of the standard names, that will be used instead.
|
|
||||||
To insert components before or after the 'standard' components, use:
|
|
||||||
|
|
||||||
<arr name="first-components">
|
|
||||||
<str>myFirstComponentName</str>
|
|
||||||
</arr>
|
|
||||||
|
|
||||||
<arr name="last-components">
|
|
||||||
<str>myLastComponentName</str>
|
|
||||||
</arr>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- The spell check component can return a list of alternative spelling
|
|
||||||
suggestions. -->
|
|
||||||
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
|
|
||||||
|
|
||||||
<str name="queryAnalyzerFieldType">textSpell</str>
|
|
||||||
|
|
||||||
<lst name="spellchecker">
|
|
||||||
<str name="name">default</str>
|
|
||||||
<str name="field">spell</str>
|
|
||||||
<str name="spellcheckIndexDir">./spellchecker1</str>
|
|
||||||
|
|
||||||
</lst>
|
|
||||||
<lst name="spellchecker">
|
|
||||||
<str name="name">jarowinkler</str>
|
|
||||||
<str name="field">spell</str>
|
|
||||||
<!-- Use a different Distance Measure -->
|
|
||||||
<str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
|
|
||||||
<str name="spellcheckIndexDir">./spellchecker2</str>
|
|
||||||
|
|
||||||
</lst>
|
|
||||||
|
|
||||||
<lst name="spellchecker">
|
|
||||||
<str name="classname">solr.FileBasedSpellChecker</str>
|
|
||||||
<str name="name">file</str>
|
|
||||||
<str name="sourceLocation">spellings.txt</str>
|
|
||||||
<str name="characterEncoding">UTF-8</str>
|
|
||||||
<str name="spellcheckIndexDir">./spellcheckerFile</str>
|
|
||||||
</lst>
|
|
||||||
</searchComponent>
|
|
||||||
|
|
||||||
<!-- a request handler utilizing the spellcheck component. This is purely as an example.
|
|
||||||
You will likely want to add the component to your already specified request handlers. -->
|
|
||||||
<requestHandler name="/spellCheckCompRH" class="solr.SearchHandler">
|
|
||||||
<lst name="defaults">
|
|
||||||
<!-- omp = Only More Popular -->
|
|
||||||
<str name="spellcheck.onlyMorePopular">false</str>
|
|
||||||
<!-- exr = Extended Results -->
|
|
||||||
<str name="spellcheck.extendedResults">false</str>
|
|
||||||
<!-- The number of suggestions to return -->
|
|
||||||
<str name="spellcheck.count">1</str>
|
|
||||||
</lst>
|
|
||||||
<arr name="last-components">
|
|
||||||
<str>spellcheck</str>
|
|
||||||
</arr>
|
|
||||||
</requestHandler>
|
|
||||||
|
|
||||||
<searchComponent name="tvComponent" class="org.apache.solr.handler.component.TermVectorComponent"/>
|
|
||||||
<!-- A Req Handler for working with the tvComponent. This is purely as an example.
|
|
||||||
You will likely want to add the component to your already specified request handlers. -->
|
|
||||||
<requestHandler name="tvrh" class="org.apache.solr.handler.component.SearchHandler">
|
|
||||||
<lst name="defaults">
|
|
||||||
<bool name="tv">true</bool>
|
|
||||||
</lst>
|
|
||||||
<arr name="last-components">
|
|
||||||
<str>tvComponent</str>
|
|
||||||
</arr>
|
|
||||||
</requestHandler>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- a search component that enables you to configure the top results for
|
|
||||||
a given query regardless of the normal lucene scoring.-->
|
|
||||||
<searchComponent name="elevator" class="solr.QueryElevationComponent" >
|
|
||||||
<!-- pick a fieldType to analyze queries -->
|
|
||||||
<str name="queryFieldType">string</str>
|
|
||||||
<str name="config-file">elevate.xml</str>
|
|
||||||
</searchComponent>
|
|
||||||
|
|
||||||
<!-- a request handler utilizing the elevator component -->
|
|
||||||
<requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">
|
|
||||||
<lst name="defaults">
|
|
||||||
<str name="echoParams">explicit</str>
|
|
||||||
</lst>
|
|
||||||
<arr name="last-components">
|
|
||||||
<str>elevator</str>
|
|
||||||
</arr>
|
|
||||||
</requestHandler>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Update request handler.
|
|
||||||
|
|
||||||
Note: Since solr1.1 requestHandlers requires a valid content type header if posted in
|
|
||||||
the body. For example, curl now requires: -H 'Content-type:text/xml; charset=utf-8'
|
|
||||||
The response format differs from solr1.1 formatting and returns a standard error code.
|
|
||||||
|
|
||||||
To enable solr1.1 behavior, remove the /update handler or change its path
|
|
||||||
-->
|
|
||||||
<requestHandler name="/update" class="solr.XmlUpdateRequestHandler" />
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Analysis request handler. Since Solr 1.3. Use to returnhow a document is analyzed. Useful
|
|
||||||
for debugging and as a token server for other types of applications
|
|
||||||
-->
|
|
||||||
<requestHandler name="/analysis" class="solr.AnalysisRequestHandler" />
|
|
||||||
|
|
||||||
|
|
||||||
<!-- CSV update handler, loaded on demand -->
|
|
||||||
<requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy" />
|
|
||||||
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Admin Handlers - This will register all the standard admin RequestHandlers. Adding
|
|
||||||
this single handler is equivalent to registering:
|
|
||||||
|
|
||||||
<requestHandler name="/admin/luke" class="org.apache.solr.handler.admin.LukeRequestHandler" />
|
|
||||||
<requestHandler name="/admin/system" class="org.apache.solr.handler.admin.SystemInfoHandler" />
|
|
||||||
<requestHandler name="/admin/plugins" class="org.apache.solr.handler.admin.PluginInfoHandler" />
|
|
||||||
<requestHandler name="/admin/threads" class="org.apache.solr.handler.admin.ThreadDumpHandler" />
|
|
||||||
<requestHandler name="/admin/properties" class="org.apache.solr.handler.admin.PropertiesRequestHandler" />
|
|
||||||
<requestHandler name="/admin/file" class="org.apache.solr.handler.admin.ShowFileRequestHandler" >
|
|
||||||
|
|
||||||
If you wish to hide files under ${solr.home}/conf, explicitly register the ShowFileRequestHandler using:
|
|
||||||
<requestHandler name="/admin/file" class="org.apache.solr.handler.admin.ShowFileRequestHandler" >
|
|
||||||
<lst name="invariants">
|
|
||||||
<str name="hidden">synonyms.txt</str>
|
|
||||||
<str name="hidden">anotherfile.txt</str>
|
|
||||||
</lst>
|
|
||||||
</requestHandler>
|
|
||||||
-->
|
|
||||||
<requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
|
|
||||||
|
|
||||||
<!-- ping/healthcheck -->
|
|
||||||
<requestHandler name="/admin/ping" class="PingRequestHandler">
|
|
||||||
<lst name="defaults">
|
|
||||||
<str name="qt">standard</str>
|
|
||||||
<str name="q">solrpingquery</str>
|
|
||||||
<str name="echoParams">all</str>
|
|
||||||
</lst>
|
|
||||||
</requestHandler>
|
|
||||||
|
|
||||||
<!-- Echo the request contents back to the client -->
|
|
||||||
<requestHandler name="/debug/dump" class="solr.DumpRequestHandler" >
|
|
||||||
<lst name="defaults">
|
|
||||||
<str name="echoParams">explicit</str> <!-- for all params (including the default etc) use: 'all' -->
|
|
||||||
<str name="echoHandler">true</str>
|
|
||||||
</lst>
|
|
||||||
</requestHandler>
|
|
||||||
|
|
||||||
<highlighting>
|
|
||||||
<!-- Configure the standard fragmenter -->
|
|
||||||
<!-- This could most likely be commented out in the "default" case -->
|
|
||||||
<fragmenter name="gap" class="org.apache.solr.highlight.GapFragmenter" default="true">
|
|
||||||
<lst name="defaults">
|
|
||||||
<int name="hl.fragsize">100</int>
|
|
||||||
</lst>
|
|
||||||
</fragmenter>
|
|
||||||
|
|
||||||
<!-- A regular-expression-based fragmenter (f.i., for sentence extraction) -->
|
|
||||||
<fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter">
|
|
||||||
<lst name="defaults">
|
|
||||||
<!-- slightly smaller fragsizes work better because of slop -->
|
|
||||||
<int name="hl.fragsize">70</int>
|
|
||||||
<!-- allow 50% slop on fragment sizes -->
|
|
||||||
<float name="hl.regex.slop">0.5</float>
|
|
||||||
<!-- a basic sentence pattern -->
|
|
||||||
<str name="hl.regex.pattern">[-\w ,/\n\"']{20,200}</str>
|
|
||||||
</lst>
|
|
||||||
</fragmenter>
|
|
||||||
|
|
||||||
<!-- Configure the standard formatter -->
|
|
||||||
<formatter name="html" class="org.apache.solr.highlight.HtmlFormatter" default="true">
|
|
||||||
<lst name="defaults">
|
|
||||||
<str name="hl.simple.pre"><![CDATA[<em>]]></str>
|
|
||||||
<str name="hl.simple.post"><![CDATA[</em>]]></str>
|
|
||||||
</lst>
|
|
||||||
</formatter>
|
|
||||||
</highlighting>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- queryResponseWriter plugins... query responses will be written using the
|
|
||||||
writer specified by the 'wt' request parameter matching the name of a registered
|
|
||||||
writer.
|
|
||||||
The "default" writer is the default and will be used if 'wt' is not specified
|
|
||||||
in the request. XMLResponseWriter will be used if nothing is specified here.
|
|
||||||
The json, python, and ruby writers are also available by default.
|
|
||||||
|
|
||||||
<queryResponseWriter name="xml" class="solr.XMLResponseWriter" default="true"/>
|
|
||||||
<queryResponseWriter name="json" class="solr.JSONResponseWriter"/>
|
|
||||||
<queryResponseWriter name="python" class="solr.PythonResponseWriter"/>
|
|
||||||
<queryResponseWriter name="ruby" class="solr.RubyResponseWriter"/>
|
|
||||||
<queryResponseWriter name="php" class="solr.PHPResponseWriter"/>
|
|
||||||
<queryResponseWriter name="phps" class="solr.PHPSerializedResponseWriter"/>
|
|
||||||
|
|
||||||
<queryResponseWriter name="custom" class="com.example.MyResponseWriter"/>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<queryResponseWriter name="velocity" class="solr.VelocityResponseWriter"/>
|
|
||||||
|
|
||||||
<!-- XSLT response writer transforms the XML output by any xslt file found
|
|
||||||
in Solr's conf/xslt directory. Changes to xslt files are checked for
|
|
||||||
every xsltCacheLifetimeSeconds.
|
|
||||||
-->
|
|
||||||
<queryResponseWriter name="xslt" class="solr.XSLTResponseWriter">
|
|
||||||
<int name="xsltCacheLifetimeSeconds">5</int>
|
|
||||||
</queryResponseWriter>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- example of registering a query parser
|
|
||||||
<queryParser name="lucene" class="org.apache.solr.search.LuceneQParserPlugin"/>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- example of registering a custom function parser
|
|
||||||
<valueSourceParser name="myfunc" class="com.mycompany.MyValueSourceParser" />
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- config for the admin interface -->
|
|
||||||
<admin>
|
|
||||||
<defaultQuery>solr</defaultQuery>
|
|
||||||
|
|
||||||
<!-- configure a healthcheck file for servers behind a loadbalancer
|
|
||||||
<healthcheck type="file">server-enabled</healthcheck>
|
|
||||||
-->
|
|
||||||
</admin>
|
|
||||||
|
|
||||||
</config>
|
|
|
@ -1,2 +0,0 @@
|
||||||
pizza
|
|
||||||
history
|
|
|
@ -1,58 +0,0 @@
|
||||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
# contributor license agreements. See the NOTICE file distributed with
|
|
||||||
# this work for additional information regarding copyright ownership.
|
|
||||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
# (the "License"); you may not use this file except in compliance with
|
|
||||||
# the License. You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# 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
|
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
# (the "License"); you may not use this file except in compliance with
|
|
||||||
# the License. You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
#-----------------------------------------------------------------------
|
|
||||||
#some test synonym mappings unlikely to appear in real input text
|
|
||||||
aaa => aaaa
|
|
||||||
bbb => bbbb1 bbbb2
|
|
||||||
ccc => cccc1,cccc2
|
|
||||||
a\=>a => b\=>b
|
|
||||||
a\,a => b\,b
|
|
||||||
fooaaa,baraaa,bazaaa
|
|
||||||
|
|
||||||
# Some synonym groups specific to this example
|
|
||||||
GB,gib,gigabyte,gigabytes
|
|
||||||
MB,mib,megabyte,megabytes
|
|
||||||
Television, Televisions, TV, TVs
|
|
||||||
#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
|
|
||||||
#after us won't split it into two words.
|
|
||||||
|
|
||||||
# Synonym mappings can be used for spelling correction too
|
|
||||||
pixima => pixma
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
# if the encoding of your velocity template is other than ISO-8859-1,
|
|
||||||
# set the input.encoding property.
|
|
||||||
#input.encoding = UTF-8
|
|
|
@ -1,67 +0,0 @@
|
||||||
#set($searcher=$request.searcher)
|
|
||||||
#set($params=$request.params)
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>#param('title')</title>
|
|
||||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
|
|
||||||
<script type="text/javascript" src="/solr/admin/jquery-1.2.3.min.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/solr/admin/file?file=/velocity/main.css&contentType=text/css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
#parse("header.vm")
|
|
||||||
|
|
||||||
#set($filter_queries = $params.getParams('fq'))
|
|
||||||
#foreach($fq in $filter_queries)
|
|
||||||
> <a href="#url_for_filters($filter_queries.subList(0,$velocityCount))">$fq</a>
|
|
||||||
#end
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="query-box">
|
|
||||||
<form id="query-form" action="/solr/itas" method="GET">
|
|
||||||
Query: <input type="text" name="q" value="$!params.get('q')"/>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="facet-fields">
|
|
||||||
#foreach($field in $response.facetFields)
|
|
||||||
<span class="facet-field">$field.name</span>
|
|
||||||
<ul>
|
|
||||||
#foreach($facet in $field.values)
|
|
||||||
#set($facetURL = "#url_for_nested_facet($field.name, $facet.name)")
|
|
||||||
#if ($facetURL != '')
|
|
||||||
<li><a href="$facetURL">$facet.name</a> ($facet.count)</li>
|
|
||||||
#end
|
|
||||||
#end
|
|
||||||
</ul>
|
|
||||||
#end
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="pagination">
|
|
||||||
<span><span class="results-found">$page.results_found</span> results found in ${response.responseHeader.QTime} ms</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="results">
|
|
||||||
#foreach($doc in $response.results)
|
|
||||||
#parse("hit.vm")
|
|
||||||
#end
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="pagination">
|
|
||||||
#link_to_previous_page("previous")
|
|
||||||
<span class="results-found">$page.results_found</span> results found.
|
|
||||||
Page <span class="page-num">$page.current_page_number</span> of <span
|
|
||||||
class="page-count">$page.page_count</span>
|
|
||||||
#link_to_next_page("next")
|
|
||||||
|
|
||||||
<br/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
#parse("footer.vm")
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,9 +0,0 @@
|
||||||
<h1>REQUEST</h1>
|
|
||||||
<div>
|
|
||||||
$esc.html($request)
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h1>RESPONSE</h1>
|
|
||||||
<div>
|
|
||||||
$esc.html($response)
|
|
||||||
</div>
|
|
|
@ -1,16 +0,0 @@
|
||||||
<div class="result-document">
|
|
||||||
#foreach($fieldname in $doc.fieldNames)
|
|
||||||
<p>
|
|
||||||
<span class="field-name">$fieldname :</span>
|
|
||||||
<span>
|
|
||||||
#foreach($value in $doc.getFieldValues($fieldname))
|
|
||||||
$value
|
|
||||||
#end
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
#end
|
|
||||||
#if($params.getBool("debugQuery",false))
|
|
||||||
<a href="#" onclick='jQuery(this).siblings("pre").toggle(); return false;'>toggle explain</a>
|
|
||||||
<pre style="display:none">$response.getExplainMap().get($doc.getFirstValue('id'))</pre>
|
|
||||||
#end
|
|
||||||
</div>
|
|
|
@ -1,8 +0,0 @@
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Solritas</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
$content
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,96 +0,0 @@
|
||||||
.array-field {
|
|
||||||
border: 2px solid #474747;
|
|
||||||
background: #FFE9D8;
|
|
||||||
padding: 5px;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.array-field-list li {
|
|
||||||
list-style: circle;
|
|
||||||
margin-left: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: Arial, Helvetica, sans-serif;
|
|
||||||
font-size: 10pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
.constraints-title {
|
|
||||||
background: gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
.facet-fields {
|
|
||||||
float: left;
|
|
||||||
margin: 5px;
|
|
||||||
margin-top: 0px;
|
|
||||||
background: #FEC293;
|
|
||||||
border: 2px solid #474747;
|
|
||||||
width: 185px;
|
|
||||||
padding: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.facet-field {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.highlight {
|
|
||||||
color: white;
|
|
||||||
background-color: gray;
|
|
||||||
border: 1px black solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
.highlight-box {
|
|
||||||
margin-left: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.field-name {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.highlighted-facet-field {
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#logo {
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.query-box, .constraints {
|
|
||||||
padding: 5px;
|
|
||||||
margin: 5px;
|
|
||||||
border: 3px solid #474747;
|
|
||||||
color: white;
|
|
||||||
background: #FD9644;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.query-box input {
|
|
||||||
margin-left: 8px;
|
|
||||||
width: 85%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pagination {
|
|
||||||
padding-left: 33%;
|
|
||||||
font-weight: bold;
|
|
||||||
background: gray;
|
|
||||||
color: white;
|
|
||||||
margin: 5px;
|
|
||||||
margin-left: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.result-document {
|
|
||||||
border: 3px solid #474747;
|
|
||||||
background: #FEC293;
|
|
||||||
padding: 5px;
|
|
||||||
margin: 5px;
|
|
||||||
margin-left: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.selected-facet-field {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
li.show {
|
|
||||||
list-style: disc;
|
|
||||||
}
|
|
|
@ -1,132 +0,0 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
* contributor license agreements. See the NOTICE file distributed with
|
|
||||||
* this work for additional information regarding copyright ownership.
|
|
||||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
* (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Simple transform of Solr query results to HTML
|
|
||||||
-->
|
|
||||||
<xsl:stylesheet version='1.0'
|
|
||||||
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
|
|
||||||
>
|
|
||||||
|
|
||||||
<xsl:output media-type="text/html; charset=UTF-8" encoding="UTF-8"/>
|
|
||||||
|
|
||||||
<xsl:variable name="title" select="concat('Solr search results (',response/result/@numFound,' documents)')"/>
|
|
||||||
|
|
||||||
<xsl:template match='/'>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title><xsl:value-of select="$title"/></title>
|
|
||||||
<xsl:call-template name="css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1><xsl:value-of select="$title"/></h1>
|
|
||||||
<div class="note">
|
|
||||||
This has been formatted by the sample "example.xsl" transform -
|
|
||||||
use your own XSLT to get a nicer page
|
|
||||||
</div>
|
|
||||||
<xsl:apply-templates select="response/result/doc"/>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template match="doc">
|
|
||||||
<xsl:variable name="pos" select="position()"/>
|
|
||||||
<div class="doc">
|
|
||||||
<table width="100%">
|
|
||||||
<xsl:apply-templates>
|
|
||||||
<xsl:with-param name="pos"><xsl:value-of select="$pos"/></xsl:with-param>
|
|
||||||
</xsl:apply-templates>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template match="doc/*[@name='score']" priority="100">
|
|
||||||
<xsl:param name="pos"></xsl:param>
|
|
||||||
<tr>
|
|
||||||
<td class="name">
|
|
||||||
<xsl:value-of select="@name"/>
|
|
||||||
</td>
|
|
||||||
<td class="value">
|
|
||||||
<xsl:value-of select="."/>
|
|
||||||
|
|
||||||
<xsl:if test="boolean(//lst[@name='explain'])">
|
|
||||||
<xsl:element name="a">
|
|
||||||
<!-- can't allow whitespace here -->
|
|
||||||
<xsl:attribute name="href">javascript:toggle("<xsl:value-of select="concat('exp-',$pos)" />");</xsl:attribute>?</xsl:element>
|
|
||||||
<br/>
|
|
||||||
<xsl:element name="div">
|
|
||||||
<xsl:attribute name="class">exp</xsl:attribute>
|
|
||||||
<xsl:attribute name="id">
|
|
||||||
<xsl:value-of select="concat('exp-',$pos)" />
|
|
||||||
</xsl:attribute>
|
|
||||||
<xsl:value-of select="//lst[@name='explain']/str[position()=$pos]"/>
|
|
||||||
</xsl:element>
|
|
||||||
</xsl:if>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template match="doc/arr" priority="100">
|
|
||||||
<tr>
|
|
||||||
<td class="name">
|
|
||||||
<xsl:value-of select="@name"/>
|
|
||||||
</td>
|
|
||||||
<td class="value">
|
|
||||||
<ul>
|
|
||||||
<xsl:for-each select="*">
|
|
||||||
<li><xsl:value-of select="."/></li>
|
|
||||||
</xsl:for-each>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
|
|
||||||
<xsl:template match="doc/*">
|
|
||||||
<tr>
|
|
||||||
<td class="name">
|
|
||||||
<xsl:value-of select="@name"/>
|
|
||||||
</td>
|
|
||||||
<td class="value">
|
|
||||||
<xsl:value-of select="."/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template match="*"/>
|
|
||||||
|
|
||||||
<xsl:template name="css">
|
|
||||||
<script>
|
|
||||||
function toggle(id) {
|
|
||||||
var obj = document.getElementById(id);
|
|
||||||
obj.style.display = (obj.style.display != 'block') ? 'block' : 'none';
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style type="text/css">
|
|
||||||
body { font-family: "Lucida Grande", sans-serif }
|
|
||||||
td.name { font-style: italic; font-size:80%; }
|
|
||||||
td { vertical-align: top; }
|
|
||||||
ul { margin: 0px; margin-left: 1em; padding: 0px; }
|
|
||||||
.note { font-size:80%; }
|
|
||||||
.doc { margin-top: 1em; border-top: solid grey 1px; }
|
|
||||||
.exp { display: none; font-family: monospace; white-space: pre; }
|
|
||||||
</style>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
</xsl:stylesheet>
|
|
|
@ -1,67 +0,0 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
* contributor license agreements. See the NOTICE file distributed with
|
|
||||||
* this work for additional information regarding copyright ownership.
|
|
||||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
* (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Simple transform of Solr query results to Atom
|
|
||||||
-->
|
|
||||||
|
|
||||||
<xsl:stylesheet version='1.0'
|
|
||||||
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
|
|
||||||
|
|
||||||
<xsl:output
|
|
||||||
method="xml"
|
|
||||||
encoding="utf-8"
|
|
||||||
media-type="text/xml; charset=UTF-8"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<xsl:template match='/'>
|
|
||||||
<xsl:variable name="query" select="response/lst[@name='responseHeader']/lst[@name='params']/str[@name='q']"/>
|
|
||||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
|
||||||
<title>Example Solr Atom 1.0 Feed</title>
|
|
||||||
<subtitle>
|
|
||||||
This has been formatted by the sample "example_atom.xsl" transform -
|
|
||||||
use your own XSLT to get a nicer Atom feed.
|
|
||||||
</subtitle>
|
|
||||||
<author>
|
|
||||||
<name>Apache Solr</name>
|
|
||||||
<email>solr-user@lucene.apache.org</email>
|
|
||||||
</author>
|
|
||||||
<link rel="self" type="application/atom+xml"
|
|
||||||
href="http://localhost:8983/solr/q={$query}&wt=xslt&tr=atom.xsl"/>
|
|
||||||
<updated>
|
|
||||||
<xsl:value-of select="response/result/doc[position()=1]/date[@name='timestamp']"/>
|
|
||||||
</updated>
|
|
||||||
<id>tag:localhost,2007:example</id>
|
|
||||||
<xsl:apply-templates select="response/result/doc"/>
|
|
||||||
</feed>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<!-- search results xslt -->
|
|
||||||
<xsl:template match="doc">
|
|
||||||
<xsl:variable name="id" select="str[@name='id']"/>
|
|
||||||
<entry>
|
|
||||||
<title><xsl:value-of select="str[@name='name']"/></title>
|
|
||||||
<link href="http://localhost:8983/solr/select?q={$id}"/>
|
|
||||||
<id>tag:localhost,2007:<xsl:value-of select="$id"/></id>
|
|
||||||
<summary><xsl:value-of select="arr[@name='features']"/></summary>
|
|
||||||
<updated><xsl:value-of select="date[@name='timestamp']"/></updated>
|
|
||||||
</entry>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
</xsl:stylesheet>
|
|
|
@ -1,66 +0,0 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
* contributor license agreements. See the NOTICE file distributed with
|
|
||||||
* this work for additional information regarding copyright ownership.
|
|
||||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
* (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Simple transform of Solr query results to RSS
|
|
||||||
-->
|
|
||||||
|
|
||||||
<xsl:stylesheet version='1.0'
|
|
||||||
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
|
|
||||||
|
|
||||||
<xsl:output
|
|
||||||
method="xml"
|
|
||||||
encoding="utf-8"
|
|
||||||
media-type="text/xml; charset=UTF-8"
|
|
||||||
/>
|
|
||||||
<xsl:template match='/'>
|
|
||||||
<rss version="2.0">
|
|
||||||
<channel>
|
|
||||||
<title>Example Solr RSS 2.0 Feed</title>
|
|
||||||
<link>http://localhost:8983/solr</link>
|
|
||||||
<description>
|
|
||||||
This has been formatted by the sample "example_rss.xsl" transform -
|
|
||||||
use your own XSLT to get a nicer RSS feed.
|
|
||||||
</description>
|
|
||||||
<language>en-us</language>
|
|
||||||
<docs>http://localhost:8983/solr</docs>
|
|
||||||
<xsl:apply-templates select="response/result/doc"/>
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<!-- search results xslt -->
|
|
||||||
<xsl:template match="doc">
|
|
||||||
<xsl:variable name="id" select="str[@name='id']"/>
|
|
||||||
<xsl:variable name="timestamp" select="date[@name='timestamp']"/>
|
|
||||||
<item>
|
|
||||||
<title><xsl:value-of select="str[@name='name']"/></title>
|
|
||||||
<link>
|
|
||||||
http://localhost:8983/solr/select?q=id:<xsl:value-of select="$id"/>
|
|
||||||
</link>
|
|
||||||
<description>
|
|
||||||
<xsl:value-of select="arr[@name='features']"/>
|
|
||||||
</description>
|
|
||||||
<pubDate><xsl:value-of select="$timestamp"/></pubDate>
|
|
||||||
<guid>
|
|
||||||
http://localhost:8983/solr/select?q=id:<xsl:value-of select="$id"/>
|
|
||||||
</guid>
|
|
||||||
</item>
|
|
||||||
</xsl:template>
|
|
||||||
</xsl:stylesheet>
|
|
|
@ -1,337 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
contributor license agreements. See the NOTICE file distributed with
|
|
||||||
this work for additional information regarding copyright ownership.
|
|
||||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
(the "License"); you may not use this file except in compliance with
|
|
||||||
the License. You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Display the luke request handler with graphs
|
|
||||||
-->
|
|
||||||
<xsl:stylesheet
|
|
||||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
||||||
xmlns="http://www.w3.org/1999/xhtml"
|
|
||||||
version="1.0"
|
|
||||||
>
|
|
||||||
<xsl:output
|
|
||||||
method="html"
|
|
||||||
encoding="UTF-8"
|
|
||||||
media-type="text/html; charset=UTF-8"
|
|
||||||
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
||||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<xsl:variable name="title">Solr Luke Request Handler Response</xsl:variable>
|
|
||||||
|
|
||||||
<xsl:template match="/">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<link rel="stylesheet" type="text/css" href="solr-admin.css"/>
|
|
||||||
<link rel="icon" href="favicon.ico" type="image/ico"/>
|
|
||||||
<link rel="shortcut icon" href="favicon.ico" type="image/ico"/>
|
|
||||||
<title>
|
|
||||||
<xsl:value-of select="$title"/>
|
|
||||||
</title>
|
|
||||||
<xsl:call-template name="css"/>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>
|
|
||||||
<xsl:value-of select="$title"/>
|
|
||||||
</h1>
|
|
||||||
<div class="doc">
|
|
||||||
<ul>
|
|
||||||
<xsl:if test="response/lst[@name='index']">
|
|
||||||
<li>
|
|
||||||
<a href="#index">Index Statistics</a>
|
|
||||||
</li>
|
|
||||||
</xsl:if>
|
|
||||||
<xsl:if test="response/lst[@name='fields']">
|
|
||||||
<li>
|
|
||||||
<a href="#fields">Field Statistics</a>
|
|
||||||
<ul>
|
|
||||||
<xsl:for-each select="response/lst[@name='fields']/lst">
|
|
||||||
<li>
|
|
||||||
<a href="#{@name}">
|
|
||||||
<xsl:value-of select="@name"/>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</xsl:for-each>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</xsl:if>
|
|
||||||
<xsl:if test="response/lst[@name='doc']">
|
|
||||||
<li>
|
|
||||||
<a href="#doc">Document statistics</a>
|
|
||||||
</li>
|
|
||||||
</xsl:if>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<xsl:if test="response/lst[@name='index']">
|
|
||||||
<h2><a name="index"/>Index Statistics</h2>
|
|
||||||
<xsl:apply-templates select="response/lst[@name='index']"/>
|
|
||||||
</xsl:if>
|
|
||||||
<xsl:if test="response/lst[@name='fields']">
|
|
||||||
<h2><a name="fields"/>Field Statistics</h2>
|
|
||||||
<xsl:apply-templates select="response/lst[@name='fields']"/>
|
|
||||||
</xsl:if>
|
|
||||||
<xsl:if test="response/lst[@name='doc']">
|
|
||||||
<h2><a name="doc"/>Document statistics</h2>
|
|
||||||
<xsl:apply-templates select="response/lst[@name='doc']"/>
|
|
||||||
</xsl:if>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template match="lst">
|
|
||||||
<xsl:if test="parent::lst">
|
|
||||||
<tr>
|
|
||||||
<td colspan="2">
|
|
||||||
<div class="doc">
|
|
||||||
<xsl:call-template name="list"/>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</xsl:if>
|
|
||||||
<xsl:if test="not(parent::lst)">
|
|
||||||
<div class="doc">
|
|
||||||
<xsl:call-template name="list"/>
|
|
||||||
</div>
|
|
||||||
</xsl:if>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template name="list">
|
|
||||||
<xsl:if test="count(child::*)>0">
|
|
||||||
<table>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th colspan="2">
|
|
||||||
<p>
|
|
||||||
<a name="{@name}"/>
|
|
||||||
</p>
|
|
||||||
<xsl:value-of select="@name"/>
|
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<xsl:choose>
|
|
||||||
<xsl:when
|
|
||||||
test="@name='histogram'">
|
|
||||||
<tr>
|
|
||||||
<td colspan="2">
|
|
||||||
<xsl:call-template name="histogram"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</xsl:when>
|
|
||||||
<xsl:otherwise>
|
|
||||||
<xsl:apply-templates/>
|
|
||||||
</xsl:otherwise>
|
|
||||||
</xsl:choose>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</xsl:if>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template name="histogram">
|
|
||||||
<div class="doc">
|
|
||||||
<xsl:call-template name="barchart">
|
|
||||||
<xsl:with-param name="max_bar_width">50</xsl:with-param>
|
|
||||||
<xsl:with-param name="iwidth">800</xsl:with-param>
|
|
||||||
<xsl:with-param name="iheight">160</xsl:with-param>
|
|
||||||
<xsl:with-param name="fill">blue</xsl:with-param>
|
|
||||||
</xsl:call-template>
|
|
||||||
</div>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template name="barchart">
|
|
||||||
<xsl:param name="max_bar_width"/>
|
|
||||||
<xsl:param name="iwidth"/>
|
|
||||||
<xsl:param name="iheight"/>
|
|
||||||
<xsl:param name="fill"/>
|
|
||||||
<xsl:variable name="max">
|
|
||||||
<xsl:for-each select="int">
|
|
||||||
<xsl:sort data-type="number" order="descending"/>
|
|
||||||
<xsl:if test="position()=1">
|
|
||||||
<xsl:value-of select="."/>
|
|
||||||
</xsl:if>
|
|
||||||
</xsl:for-each>
|
|
||||||
</xsl:variable>
|
|
||||||
<xsl:variable name="bars">
|
|
||||||
<xsl:value-of select="count(int)"/>
|
|
||||||
</xsl:variable>
|
|
||||||
<xsl:variable name="bar_width">
|
|
||||||
<xsl:choose>
|
|
||||||
<xsl:when test="$max_bar_width < ($iwidth div $bars)">
|
|
||||||
<xsl:value-of select="$max_bar_width"/>
|
|
||||||
</xsl:when>
|
|
||||||
<xsl:otherwise>
|
|
||||||
<xsl:value-of select="$iwidth div $bars"/>
|
|
||||||
</xsl:otherwise>
|
|
||||||
</xsl:choose>
|
|
||||||
</xsl:variable>
|
|
||||||
<table class="histogram">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<xsl:for-each select="int">
|
|
||||||
<td>
|
|
||||||
<xsl:value-of select="."/>
|
|
||||||
<div class="histogram">
|
|
||||||
<xsl:attribute name="style">background-color: <xsl:value-of select="$fill"/>; width: <xsl:value-of select="$bar_width"/>px; height: <xsl:value-of select="($iheight*number(.)) div $max"/>px;</xsl:attribute>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</xsl:for-each>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<xsl:for-each select="int">
|
|
||||||
<td>
|
|
||||||
<xsl:value-of select="@name"/>
|
|
||||||
</td>
|
|
||||||
</xsl:for-each>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template name="keyvalue">
|
|
||||||
<xsl:choose>
|
|
||||||
<xsl:when test="@name">
|
|
||||||
<tr>
|
|
||||||
<td class="name">
|
|
||||||
<xsl:value-of select="@name"/>
|
|
||||||
</td>
|
|
||||||
<td class="value">
|
|
||||||
<xsl:value-of select="."/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</xsl:when>
|
|
||||||
<xsl:otherwise>
|
|
||||||
<xsl:value-of select="."/>
|
|
||||||
</xsl:otherwise>
|
|
||||||
</xsl:choose>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template match="int|bool|long|float|double|uuid|date">
|
|
||||||
<xsl:call-template name="keyvalue"/>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template match="arr">
|
|
||||||
<tr>
|
|
||||||
<td class="name">
|
|
||||||
<xsl:value-of select="@name"/>
|
|
||||||
</td>
|
|
||||||
<td class="value">
|
|
||||||
<ul>
|
|
||||||
<xsl:for-each select="child::*">
|
|
||||||
<li>
|
|
||||||
<xsl:apply-templates/>
|
|
||||||
</li>
|
|
||||||
</xsl:for-each>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template match="str">
|
|
||||||
<xsl:choose>
|
|
||||||
<xsl:when test="@name='schema' or @name='index' or @name='flags'">
|
|
||||||
<xsl:call-template name="schema"/>
|
|
||||||
</xsl:when>
|
|
||||||
<xsl:otherwise>
|
|
||||||
<xsl:call-template name="keyvalue"/>
|
|
||||||
</xsl:otherwise>
|
|
||||||
</xsl:choose>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template name="schema">
|
|
||||||
<tr>
|
|
||||||
<td class="name">
|
|
||||||
<xsl:value-of select="@name"/>
|
|
||||||
</td>
|
|
||||||
<td class="value">
|
|
||||||
<xsl:if test="contains(.,'unstored')">
|
|
||||||
<xsl:value-of select="."/>
|
|
||||||
</xsl:if>
|
|
||||||
<xsl:if test="not(contains(.,'unstored'))">
|
|
||||||
<xsl:call-template name="infochar2string">
|
|
||||||
<xsl:with-param name="charList">
|
|
||||||
<xsl:value-of select="."/>
|
|
||||||
</xsl:with-param>
|
|
||||||
</xsl:call-template>
|
|
||||||
</xsl:if>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</xsl:template>
|
|
||||||
|
|
||||||
<xsl:template name="infochar2string">
|
|
||||||
<xsl:param name="i">1</xsl:param>
|
|
||||||
<xsl:param name="charList"/>
|
|
||||||
|
|
||||||
<xsl:variable name="char">
|
|
||||||
<xsl:value-of select="substring($charList,$i,1)"/>
|
|
||||||
</xsl:variable>
|
|
||||||
<xsl:choose>
|
|
||||||
<xsl:when test="$char='I'">
|
|
||||||
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='I']"/> - </xsl:when>
|
|
||||||
<xsl:when test="$char='T'">
|
|
||||||
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='T']"/> - </xsl:when>
|
|
||||||
<xsl:when test="$char='S'">
|
|
||||||
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='S']"/> - </xsl:when>
|
|
||||||
<xsl:when test="$char='M'">
|
|
||||||
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='M']"/> - </xsl:when>
|
|
||||||
<xsl:when test="$char='V'">
|
|
||||||
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='V']"/> - </xsl:when>
|
|
||||||
<xsl:when test="$char='o'">
|
|
||||||
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='o']"/> - </xsl:when>
|
|
||||||
<xsl:when test="$char='p'">
|
|
||||||
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='p']"/> - </xsl:when>
|
|
||||||
<xsl:when test="$char='O'">
|
|
||||||
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='O']"/> - </xsl:when>
|
|
||||||
<xsl:when test="$char='L'">
|
|
||||||
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='L']"/> - </xsl:when>
|
|
||||||
<xsl:when test="$char='B'">
|
|
||||||
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='B']"/> - </xsl:when>
|
|
||||||
<xsl:when test="$char='C'">
|
|
||||||
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='C']"/> - </xsl:when>
|
|
||||||
<xsl:when test="$char='f'">
|
|
||||||
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='f']"/> - </xsl:when>
|
|
||||||
<xsl:when test="$char='l'">
|
|
||||||
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='l']"/> -
|
|
||||||
</xsl:when>
|
|
||||||
</xsl:choose>
|
|
||||||
|
|
||||||
<xsl:if test="not($i>=string-length($charList))">
|
|
||||||
<xsl:call-template name="infochar2string">
|
|
||||||
<xsl:with-param name="i">
|
|
||||||
<xsl:value-of select="$i+1"/>
|
|
||||||
</xsl:with-param>
|
|
||||||
<xsl:with-param name="charList">
|
|
||||||
<xsl:value-of select="$charList"/>
|
|
||||||
</xsl:with-param>
|
|
||||||
</xsl:call-template>
|
|
||||||
</xsl:if>
|
|
||||||
</xsl:template>
|
|
||||||
<xsl:template name="css">
|
|
||||||
<style type="text/css">
|
|
||||||
<![CDATA[
|
|
||||||
td.name {font-style: italic; font-size:80%; }
|
|
||||||
.doc { margin: 0.5em; border: solid grey 1px; }
|
|
||||||
.exp { display: none; font-family: monospace; white-space: pre; }
|
|
||||||
div.histogram { background: none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;}
|
|
||||||
table.histogram { width: auto; vertical-align: bottom; }
|
|
||||||
table.histogram td, table.histogram th { text-align: center; vertical-align: bottom; border-bottom: 1px solid #ff9933; width: auto; }
|
|
||||||
]]>
|
|
||||||
</style>
|
|
||||||
</xsl:template>
|
|
||||||
</xsl:stylesheet>
|
|
Loading…
Reference in New Issue