⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 distancesortsource.java

📁 Local Lucene ==================== Provide geographical based searching to lucene in an efficent ma
💻 JAVA
字号:
/** * * Copyright 2007 Patrick O'Leary  * Licensed 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. * */package com.pjaol.search.geo.utils;import java.io.IOException;import java.util.HashMap;import org.apache.lucene.index.IndexReader;import org.apache.lucene.search.Filter;import org.apache.lucene.search.ScoreDoc;import org.apache.lucene.search.ScoreDocComparator;import org.apache.lucene.search.SortComparatorSource;import org.apache.lucene.search.SortField;public class DistanceSortSource implements SortComparatorSource {	/**	 * 	 */	private static final long serialVersionUID = 1L;	private DistanceFilter distanceFilter;		public DistanceSortSource (Filter distanceFilter){		this.distanceFilter = (DistanceFilter)distanceFilter;			}		public ScoreDocComparator newComparator(IndexReader reader, String field) throws IOException {				return new DistanceScoreDocLookupComparator(reader, distanceFilter);	}		private static class DistanceScoreDocLookupComparator implements ScoreDocComparator {		private HashMap distances;		private DistanceFilter distanceFilter;				public DistanceScoreDocLookupComparator(IndexReader reader, DistanceFilter distanceFilter) {			this.distanceFilter = distanceFilter;			return;		}		public int compare(ScoreDoc aDoc, ScoreDoc bDoc) {						if (this.distances == null) {					distances = distanceFilter.getDistances();			}			double a = (Double) distances.get(aDoc.doc);			double b = (Double) distances.get(bDoc.doc);			if (a > b) return 1;			if (a < b )return -1;						return 0;		}		public int sortType() {			return SortField.FLOAT;		}		public Comparable sortValue(ScoreDoc iDoc) {			return (Double)distances.get(iDoc.doc);		}			}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -