pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.5.0 / lucene / contrib / xml-query-parser / src / demo / WebContent / WEB-INF / query.xsl
diff --git a/lucene-java-3.5.0/lucene/contrib/xml-query-parser/src/demo/WebContent/WEB-INF/query.xsl b/lucene-java-3.5.0/lucene/contrib/xml-query-parser/src/demo/WebContent/WEB-INF/query.xsl
new file mode 100644 (file)
index 0000000..3be114c
--- /dev/null
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ 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.
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:template match="/Document">
+<BooleanQuery>
+       <!-- Clause if user selects a preference for type of job - apply choice of 
+            permanent/contract filter and cache -->
+       <xsl:if test="type">
+           <Clause occurs="must">
+               <ConstantScoreQuery>
+                  <CachedFilter>
+                       <TermsFilter fieldName="type"><xsl:value-of select="type"/></TermsFilter>
+                  </CachedFilter>
+                </ConstantScoreQuery>
+          </Clause>
+       </xsl:if>
+               
+       <!-- Use standard Lucene query parser for any job description input -->
+       <xsl:if test="description">
+               <Clause occurs="must">
+                       <UserQuery fieldName="description"><xsl:value-of select="description"/></UserQuery>
+               </Clause>
+       </xsl:if>      
+       
+       <!-- If any of the location fields are set OR them ALL in a Boolean filter and cache individual filters -->
+       <xsl:if test="South|North|East|West">
+               <Clause occurs="must">
+                       <ConstantScoreQuery>
+                               <BooleanFilter>
+                                       <xsl:for-each select="South|North|East|West">
+                                       <Clause occurs="should">
+                                               <CachedFilter>
+                                                       <TermsFilter fieldName="location"><xsl:value-of select="name()"/></TermsFilter>
+                                               </CachedFilter>
+                                       </Clause>
+                                       </xsl:for-each>                                 
+                               </BooleanFilter>
+                       </ConstantScoreQuery>
+               </Clause>
+       </xsl:if>       
+       
+       <!-- Use XSL functions to split and zero pad salary range value -->
+       <xsl:if test="salaryRange">
+               <Clause occurs="must">
+                       <ConstantScoreQuery>
+                               <RangeFilter fieldName="salary" >
+                                       <xsl:attribute name="lowerTerm">
+                                               <xsl:value-of select='format-number( substring-before(salaryRange,"-"), "000" )' />
+                                       </xsl:attribute> 
+                                       <xsl:attribute name="upperTerm">
+                                               <xsl:value-of select='format-number( substring-after(salaryRange,"-"), "000" )' />
+                                       </xsl:attribute> 
+                               </RangeFilter>
+                       </ConstantScoreQuery>
+               </Clause>
+       </xsl:if>       
+</BooleanQuery>
+</xsl:template>
+</xsl:stylesheet>
\ No newline at end of file