筛选布尔查询会生成 Lucene 结果



我有如下 solr json 响应,

{
     "stateOrProvinceId":"TN",
     "entityType":"hotelInfo",
     "chainCode":"SM",
     "marketerName":"InnLink",
     "propertyId":"4380",
     "marketerId":"INNLINK",
     "propertyStatus":"Active",
     "chainName":"Innlink",
     "propertyName":"Value Place Memphis NE",
     "countryCode":"US"},
{
     "entityType":"hotelInfo",
     "chainCode":"GT",
     "marketerName":"Golden Tulip",
     "propertyId":"69170",
     "marketerId":"GOLDENT",
     "propertyStatus":"Active",
     "chainName":"Golden Tulip Hotels",
     "propertyName":"Tulip Inn Sunny Hill",
     "countryCode":"RO"},
{
     "stateOrProvinceId":"TN",
     "entityType":"hotelInfo",
     "chainCode":"BW",
     "marketerName":"Best Western",
     "propertyId":"85336",
     "marketerId":"BESTWEST",
     "propertyStatus":"Active",
     "chainName":"Best Western Intl",
     "propertyName":"BEST WESTERN Brentwood",
     "countryCode":"US"},
{
     "entityType":"amenitiesInfo",
     "propertyId":"69170",
     "amenitiesInfoAttrId":"AC"},

我们正在搜索我们使用以下布尔查询的特定属性 id,

BooleanQuery booleanQuery = new BooleanQuery(); 
booleanQuery.add(new TermQuery(new Term("propertyId", pid)), BooleanClause.Occur.SHOULD);

给出以下响应,

{
     "entityType":"hotelInfo",
     "chainCode":"GT",
     "marketerName":"Golden Tulip",
     "propertyId":"69170",
     "marketerId":"GOLDENT",
     "propertyStatus":"Active",
     "chainName":"Golden Tulip Hotels",
     "propertyName":"Tulip Inn Sunny Hill",
     "countryCode":"RO"},
{
     "entityType":"amenitiesInfo",
     "propertyId":"69170",
     "amenitiesInfoAttrId":"AC"},

现在我需要一个查询来获取没有设施信息的酒店信息。

提前感谢您的帮助。拉加万

我不知道

我是否正确,据我所知,您想根据两个条件构建查询:pidentityType,如果您想这样做,您应该将另一个 TermQuery 添加到实体类型的布尔查询中,您应该尝试如下:

BooleanQuery booleanQuery = new BooleanQuery(); 
booleanQuery.add(new TermQuery(new Term("propertyId", pid)), BooleanClause.Occur.SHOULD);
booleanQuery.add(new TermQuery(new Term("entityType", "hotelInfo")), BooleanClause.Occur.SHOULD);

最新更新