高级搜索

要执行与 Web 或 Eclipse 客户机中的高级搜索类似的搜索,您可以使用方法 RAMAssetQueryBuilder.addQueryField(java.lang.String, java.lang.String) 向 RAMAssetQueryBuilder 添加查询字段。最近一次修改日期GUID描述资产名称评级所有者状态版本都有对应的字段。缺省情况下,所有查询字段都是用“and”运算符逻辑地连接在一起的(仅返回与所有查询字段相匹配的搜索结果)。例如,要查找名称为 Rational Asset Manager Client API Javadoc 并且版本为 7.1 的资产,请执行以下搜索。

                // Search exclusive
                queryBuilder = new RAMAssetQueryBuilder(session);
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_NAME, "Rational Asset Manager Client API Javadoc");
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_VERSION, "7.1");
                
                searchResult = session.getAssets(queryBuilder);

要更改字段处理方式,可使用 RAMQueryBuilder.setMatchAnyField(boolean) 方法,它会使用 OR 运算符将这些字段连接在一起。例如,要查找版本为 7.0、7.0.0.2 或 7.1 的资产,请执行以下搜索:

                //Search Inclusive
                queryBuilder = new RAMAssetQueryBuilder(session);
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_VERSION, "7.0");
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_VERSION, "7.0.0.2");
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_VERSION, "7.1");
                
                queryBuilder.setMatchAnyField(true);
                
                searchResult = session.getAssets(queryBuilder);

除了名称和值查询字段,还可创建文本查询字段,通过使用 RAMAssetQueryBuilder.addQueryTextField(java.lang.String) 方法,可使用“and”或“or”运算符将这些文本查询字段与其他查询字段连接在一起。

                //Search API with wildcard
                queryBuilder = new RAMAssetQueryBuilder(session);
                queryBuilder.addQueryTextField("API*");
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_VERSION, "7.1");
                
                searchResult = session.getAssets(queryBuilder);

AND_OPERATOROR_OPERATOR 运算符可用于将更复杂的查询连接到一起。例如,要创建查询来查找包含名称 API 并且版本为 7.0、7.0.0.2 或 7.1 的资产,请运行以下代码:

                //Advanced Query
                nonEscapedNameQuery = queryBuilder.createQueryFieldText(
                                queryBuilder.QUERY_FIELD_NAME, "API*");
                queryBuilder.addQueryTextField(nonEscapedNameQuery);
                
                String version71 = queryBuilder.createQueryFieldText(queryBuilder.QUERY_FIELD_VERSION, "7.0");
                String version7002 = queryBuilder.createQueryFieldText(queryBuilder.QUERY_FIELD_VERSION, "7.0.0.2");
                String version71 = queryBuilder.createQueryFieldText(queryBuilder.QUERY_FIELD_VERSION, "7.1");
                
                String versionQuery = version70 + RAMAssetQueryBuilder.OR_OPERATOR + version7002 + RAMAssetQueryBuilder.OR_OPERATOR + version71;
                
                queryBuilder.addQueryTextField(versionQuery);
                
                searchResult = session.getAssets(queryBuilder);

反馈