<?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.
-->
<SpanOr fieldName="contents">
	<SpanNear slop="8" inOrder="false" >		
			<SpanOr>
				<SpanTerm>killed</SpanTerm>
				<SpanTerm>died</SpanTerm>
				<SpanTerm>dead</SpanTerm>
			</SpanOr>
			<SpanOr>
				<!-- a less verbose way of declaring SpanTerm declarations - these are analyzed
					into a series of Tokens which are added as SpanTerm elements of a SpanOr
				-->
				<SpanOrTerms>miner miners</SpanOrTerms>
				<!-- finds mine near worker or workers -->
				<SpanNear slop="6" inOrder="false">		
					<SpanTerm>mine</SpanTerm>					
					<SpanOrTerms>worker workers</SpanOrTerms>
          <BoostingTermQuery>heavy</BoostingTermQuery>
        </SpanNear>
			</SpanOr>
	</SpanNear>	
	<SpanFirst end="10">
		<SpanOrTerms>fire burn</SpanOrTerms>
	</SpanFirst> 
	<!-- Other Span examples....
		
	<SpanNot>
		<Include>
				<SpanNear slop="2" inOrder="2">		
						<SpanTerm>social</SpanTerm>
						<SpanTerm>services</SpanTerm>
				</SpanNear>				
		</Include>
		<Exclude>
				<SpanTerm>public</SpanTerm>
		</Exclude>
	</SpanNot>
		-->
</SpanOr>
