- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人有使用lucene的空间搜索组件(lucene 3.0)的经验吗?
我尝试了一个非常简单的示例,但无法让搜索返回任何内容,请参阅下面的所有代码
import java.io.IOException;
import org.apache.lucene.analysis.WhitespaceAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.spatial.tier.DistanceQueryBuilder;
import org.apache.lucene.spatial.tier.projections.CartesianTierPlotter;
import org.apache.lucene.spatial.tier.projections.IProjector;
import org.apache.lucene.spatial.tier.projections.SinusoidalProjector;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.NumericUtils;
public class SpatialLuceneExample{
private static final String LAT_FIELD = "lat", LON_FIELD = "lon", TIER_PREFIX_FIELD = "_localTier";
private double maxMiles = 25, minMiles = 1; // anything lower than 1 mile will just give tier 15
// see http://www.nsshutdown.com/projects/lucene/whitepaper/locallucene_v2.html
private IProjector projector = new SinusoidalProjector();
private CartesianTierPlotter ctp = new CartesianTierPlotter(0, projector, TIER_PREFIX_FIELD);
//startTier is 14 for 25 miles, 15 for 1 miles in lucene 3.0
private int startTier = ctp.bestFit(maxMiles), endTier = ctp.bestFit(minMiles);
/**
* Add the lat, lon, and tier box id to the document
* see http://www.nsshutdown.com/projects/lucene/whitepaper/locallucene_v2.html
* @param lat
* @param lon
* @param document a geo document
*/
private void addSpatialLcnFields(double lat, double lon, Document document){
document.add(new Field(LAT_FIELD, NumericUtils.doubleToPrefixCoded(lat), Field.Store.YES, Field.Index.NOT_ANALYZED));
document.add(new Field(LON_FIELD, NumericUtils.doubleToPrefixCoded(lon), Field.Store.YES, Field.Index.NOT_ANALYZED));
for(int tier = startTier ; tier<= endTier; tier++){
CartesianTierPlotter ctp = new CartesianTierPlotter(tier, projector, TIER_PREFIX_FIELD);
double boxId = ctp.getTierBoxId(lat, lon);
document.add(new Field(ctp.getTierFieldName(), NumericUtils.doubleToPrefixCoded(boxId), Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS));
}
}
private void addLocation(IndexWriter writer, String name, double lat, double lon) throws IOException{
Document doc = new Document();
doc.add(new Field("name", name, Field.Store.YES, Index.ANALYZED));
doc.add(new Field("metafile", "doc", Store.YES, Index.ANALYZED));
addSpatialLcnFields(lat, lon, doc);
writer.addDocument(doc);
}
public static void main(String[] args) throws Exception{
SpatialLuceneExample sle = new SpatialLuceneExample();
Directory dir = new RAMDirectory();
IndexWriter writer = new IndexWriter(dir, new WhitespaceAnalyzer(), MaxFieldLength.UNLIMITED);
sle.addLocation(writer, "test", 39.9260, -75.1566);
writer.commit();
writer.close();
IndexSearcher searcher = new IndexSearcher(dir);
DistanceQueryBuilder dq = new DistanceQueryBuilder(39.9260, -75.1566, 10d, LAT_FIELD, LON_FIELD, true);
Query tq = new TermQuery(new Term("metafile", "doc"));
TopDocs hits = searcher.search(dq.getQuery(tq), 10);
for(int i =0; i<hits.totalHits; i++){
Document doc = searcher.doc(hits.scoreDocs[i].doc);
System.out.println(doc.get("name"));
}
}
}
任何帮助/评论将不胜感激。
最佳答案
您需要将层前缀添加到查询构建器:
DistanceQueryBuilder dq = new DistanceQueryBuilder(coord.getLat(),
coord.getLon(), miles, Spatial.LAT_FIELD, Spatial.LON_FIELD,
Spatial.TIER_PREFIX_FIELD, false);
关于java - Spatial lucene简单查询不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2209089/
我正在运行最新的 neo4j v2,并安装了空间插件。我已经设法索引了我需要在地理索引中索引的几乎所有节点。我正在努力解决的问题之一是如何轻松检查节点是否已被编入索引? 我找不到任何 REST 端点来
我想知道两个空间库 - Microsoft.Spatial 和 System.Spatial 之间有什么区别? 当我查看这两个代码时,我看到几乎相同的类。两者都有例如 GeographyPoint 或
这两种算法有什么区别? 最佳答案 cKDTree是 KDTree 的子集,用 Cython 封装的 C++ 实现,因此速度更快。 他们每个人都是 a binary trie, each of whos
通常,scipy.spatial.ckdtree 的运行速度比 scipy.spatial.kdtree 快得多。 但就我而言,scipy.spatial.ckdtree 的运行速度比 scipy.s
我想在我的代码中使用 scipy.spatial.distance.cosine。如果我执行类似 import scipy.spatial 或 from scipy import spatial 的操
我有一个应用程序,它接收许多表征 3 维空间和时间过程的数据。然后过滤这些数据并创建 Action ,然后将 Action 发送到执行 Action 的进程。冲洗并重复。 目前,我有一组自定义过滤器,
您好,有一些关于空间和时间局部性的问题。我在类(class)理论中读到过 空间局部性 如果引用了一项,则很快就会引用附近的其他地址的可能性 时间局部性 在某个时间点被引用的一项往往很快就会再次被引用。
我一直在阅读相关的 holotoolkit 空间理解代码,但找不到与获取已找到表的维度相关的任何内容。我关注了this great tutorial将 table 添加为自定义形状。但后来陷入困境。我
我有 2 个变量 x 和 y,它们是 [0,1] 处的笛卡尔坐标,z 是 a (连续)变量在这些坐标处。 z 向量有一些重要的异常值 x<-sample(seq(0,1,0.001), replace
有人有使用lucene的空间搜索组件(lucene 3.0)的经验吗? 我尝试了一个非常简单的示例,但无法让搜索返回任何内容,请参阅下面的所有代码 import java.io.IOException
SPATIAL 优于 BOUNDING 的优势 使用 SPATIAL 查询而不是使用边界框的简单 MySQL 查询有什么好处? 例如,如果我想找到属于某个多边形的所有位置: 像这样: 边界框示例 SE
我想知道是否有现成的工具,或者是否有人开发了一种方法来确定空间形状的人轴地理方向。一般来说,我希望能够确定一个形状是东西方向还是南北方向,但理想情况下,每个形状都会有一个角度或度数测量值。 ArcGI
所以,我的集合包含 25,000 个点和 15,000 个多边形。我猜多边形相当大,世界上大部分陆地都被覆盖了。 积分恢复得很好。当我执行如下查询时,集合中的第一个多边形返回正常: SELECT TO
我的应用程序从 map 文件加载约 100k 项(矩形)的集合,然后构建 MX-CIF 四叉树作为快速查找的索引。四叉树是在启动时构建的,其内容在运行时不会更改。 (在 MX-CIF 四叉树中,项目由
我们安装了 Oracle Enterprise Edition 10,正如我们的 DBA 向我解释的那样,Oracle Enterprise 安装包括所有扩展,您只需根据所使用的内容获得许可。 我们发
在下面的数据中,我正在寻找一个查询,以便可以按最近的邻居加入2个表的结果。 dbo.Interests表中的某些结果将不在dbo.Details表中, 这个问题找到单个点的k个最近点,我需要此查询来进
我最近试图在本地运行我的应用程序来测试一些东西,但由于装配问题我无法做到。具体来说: Could not load file or assembly 'System.Spatial, Version=
我有一个带有 Hibernate 和 Hibernate Spatial 的 Spring Boot 项目。该应用程序的目标之一是查找,查找当前用户周围区域中的所有匹配项。 @Entity(name
我正在尝试确定 MySQL Spatial 5.6.12 的公制系统. 例如,我创建了下表来存储多个记录的点几何图形。 CREATE TABLE POINTS_DATA( RECORD_ID
我是多边形和空间新手,我在 php/MySQL 中编码 我正在努力寻找适合 Google 的术语。 有很多关于纬度/经度点周围的项目/地点的教程,我对此很满意。 我想学习如何在矩形内的两个纬度/经度点
我是一名优秀的程序员,十分优秀!