我正在使用 Hibernate-Search 5.2 ,并尝试使用空间哈希来索引坐标。我将其与 PostgreSQL 9.4 一起使用。
我已按照说明进行操作,一切正常(搜索返回结果),但是当我查看 pgAdmin 中存储的纬度和经度值时,我看到的是实际数值,而不是我预期的哈希值。
这是正常行为还是我实际上没有按照最初的意图将值存储为哈希值?
这是我的类(class)示例:
@Entity
@Indexed
@Spatial(spatialMode = SpatialMode.HASH, name = "entityLocation")
@Table
public class RatedEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long entityId;
private String name;
private String entityType;
private String address;
private String city;
@Column(length = 2)
private String state;
@Latitude(of = "entityLocation")
@Column
private Double latitude;
@Longitude(of = "entityLocation")
@Column
private Double longitude;
最佳答案
Hibernate Search 将数据库存储的实体与 Apache Lucene 索引同步。
此索引未存储在关系数据库中,因此使用pgAdmin(或其他 SQL 终端)不是检查索引内容的正确工具,因为您正在有效地使用 NoSQL 技术与关系型数据库结合。
Lucene 索引通常存储在文件系统上,该位置由 Hibernate 配置属性控制,例如:
hibernate.search.default.directory_provider = filesystem
hibernate.search.default.indexBase = /usr/lucene/indexes
另请参阅Directory Configuration在引用文档中。
要打开这些高性能二进制编码索引,您可能需要使用类似 Luke 的工具。 ,或 Eclipse tooling for Hibernate Search
关于java - Hibernate-search 5.0 空间 - 不确定它是否在哈希中存储纬度/经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37936311/