0

我的 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"},

现在我需要一个查询来获取只有hotelInfo 而没有设施信息。

在此先感谢您的帮助。拉格万

4

1 回答 1

0

我不知道我是否做对了,据我了解,您想基于两个标准构建查询:pidentityType,如果您想这样做,您应该在 entityType 上的 BooleanQuery 中添加另一个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);
于 2017-05-18T09:54:01.910 回答