gpt4 book ai didi

java - Hibernate Search 空间构面查询首先运行 5 次,然后仅返回第 5 个结果

转载 作者:行者123 更新时间:2023-12-02 12:42:31 26 4
gpt4 key购买 nike

我有一个在不同地理位置出售的车辆的索引,并且我正在寻找所有不同的制造商以及他们在特定位置的半径内以特定价格提供的汽车数量。

我编写的查询代码似乎在前 5 次尝试中完美工作,然后结果似乎“粘在”第 5 次查询的纬度、经度和半径上。更改价格元素会更改结果,但仅限于第 5 个查询的位置和半径。

我不确定是否必须“刷新”任何内容,或者这是一个配置问题,但查询在 5 次尝试后停止工作似乎很奇怪。我很困惑,无法在网上找到这个问题,因此我们将不胜感激任何帮助或见解。

这是查询...

private List<VehicleManufacturer> getManufacturers( double valuation , double latitude , double longitude, int radius  ) throws Exception {

long startTIme = new Date().getTime() ;

List<VehicleManufacturer> returnedManufacturers = new ArrayList<VehicleManufacturer> () ;

FullTextEntityManager manufacturerFullTextEntityManager = org.hibernate.search.jpa.Search.getFullTextEntityManager(em);
QueryBuilder manufacturerBuilder = manufacturerFullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(AvailableVehicle.class).get() ;

// CREATE SPATIAL AND TOP PRICE FULL TEXT QUERY
org.apache.lucene.search.Query manufacturingSpatialQuery = manufacturerBuilder.spatial().within( radius , Unit.KM ).ofLatitude( latitude ).andLongitude( longitude ).createQuery();
org.apache.lucene.search.Query manufacturingValuationRoof = NumericRangeQuery.newDoubleRange("valuation", 0d , valuation , true, true);
org.apache.lucene.search.Query manufacturingValuationAndSpatialQuery = manufacturerBuilder.bool().must(manufacturingValuationRoof).must(manufacturingSpatialQuery).createQuery() ;
FullTextQuery manufacturingFullTextQuery = manufacturerFullTextEntityManager.createFullTextQuery(manufacturingValuationAndSpatialQuery, AvailableVehicle.class);

// FACET REQUEST
FacetingRequest manufacturingFacetingRequest = manufacturerBuilder.facet().name( "manufacturerFaceting" ).onField("manufacturer").discrete().orderedBy( FacetSortOrder.FIELD_VALUE ).includeZeroCounts(false).createFacetingRequest();

FacetManager facetManager = manufacturingFullTextQuery.getFacetManager();
facetManager.enableFaceting(manufacturingFacetingRequest);
List<Facet> facets = facetManager.getFacets( "manufacturerFaceting" );

for (Facet manuacturingFacet : facets) {
VehicleManufacturer manufacturer = new VehicleManufacturer( manuacturingFacet.getValue() , manuacturingFacet.getCount() ) ;
returnedManufacturers.add( manufacturer ) ;
}

System.out.println( "MANUFACTURERS count: " + returnedManufacturers.size() + " time: " + ( new Date().getTime() - startTIme ) + "ms latitude:" + latitude + " longitude: " + longitude + " radius: " + radius ) ;

return returnedManufacturers ;
}

...这是删节的索引对象类...

@Entity
@Indexed( index="AvailableVehicle" )
@Spatial(spatialMode = SpatialMode.RANGE )
@Table(name = "car_available_vehicle")
public class AvailableVehicle implements Coordinates {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "ID" )
private int id ;

@OneToOne()
@JoinColumn( name="VEHICLE_ID" )
private Vehicle vehicle ;

@Facet()
@Column(name = "MANUFACTURER" )
@Field(index=Index.YES, analyze=Analyze.NO, store=Store.NO)
private String manufacturer ;

@Facet()
@Column(name = "MODEL" )
@Field(index=Index.YES, analyze=Analyze.NO, store=Store.NO)
private String model ;

@Column(name = "LONGITUDE" )
private Double longitude ;

@Column(name = "LATITUDE" )
private Double latitude ;

@Column(name = "PRICE" )
@Field(index=Index.YES, analyze=Analyze.NO, store=Store.NO)
@NumericField( forField="price" )
private double price ;

@Column(name = "VALUATION" )
@Field(index=Index.YES, analyze=Analyze.NO, store=Store.NO)
@NumericField( forField="valuation" )
private double valuation ;

.. 这里是 hibernate maven 依赖项...

    <dependency> 
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.9.Final</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search-orm</artifactId>
<version>5.7.0.Final</version>
</dependency>

感谢您的阅读

最佳答案

这只是一个猜测,但您可能会点击 HSEARCH-2691 。该错误已在 Hibernate Search 版本 5.7.1.Final 中修复;也许你可以尝试那个版本?

关于java - Hibernate Search 空间构面查询首先运行 5 次,然后仅返回第 5 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44884672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com