Anzeige der Eigenschaften mit SearchService

Das SearchService liefert die Werte, die auch im Client Service angezeigt werden. Sie können also auch den CategoryDescriptor anpassen, wie im Kapitel "Eigenschaften indizieren und suchen" unter "Anzeige der Eigenschaften im Mindbreeze Client" beschrieben.

Sie können aber auch mit addRequestProperty Eigenschaften bei der Suche anfordern.

QueryExpr query = QueryExpr.newBuilder().setKind(QueryExpr.Kind.EXPR_UNPARSED).setUnparsedExpr(userQuery).build();
SearchRequest searchRequest = SearchRequest.newBuilder()
	.setRankingStrategy(RankingStrategy.RANK)
	.setDetailLimit(DetailLimit.CONTENT)
	.setUserQuery(query)
	.addRequestedProperty(PropertyDefinition.newBuilder().setName("title"))
	.addView(View.newBuilder()
		.setId(View)
		.setCount(10)					.setRankingStrategy(mindbreeze.query.ViewProtos.View.RankingStrategy.RELEVANCE)
	)
.build();

Sie erhalten ein exakt gleiches Value-Objekt, das Sie bei der Indizierung angegeben haben.

Statt einer einfachen Unparsed-QueryExpr können Sie auch eine Labeled-QueryExpr verwenden. Damit können Sie den Namen der Eigenschaft getrennt vom Suchbegriff definieren.

QueryExpr query = QueryExpr.newBuilder()
.setKind(QueryExpr.Kind.EXPR_LABELED)
	.setNamedExpr(Labeled.newBuilder()
		.setLabel("name")
		.setExpr(QueryExpr.newBuilder()
			.setKind(QueryExpr.Kind.EXPR_UNPARSED)
			.setUnparsedExpr("value")
		)
	).build();

Dies ist zum Beispiel nützlich, wenn es ein Eingabefeld für eine Eigenschaft gibt. Dann ist der Eigenschaftsname fix definiert, und die Benutzereingabe wird als Suchbegriff verwendet.