I'm looking at using Managed Metadata for a project, and I'm trying to make sure I set this up correctly, and whether or not it can do what I want it to do.
Let's say I have a set of buildings and in each building there are tenants. So I was going to set this up as a hierarchy in the Term Store:
TermGroup: Real Estate
TermSet: Buildings
Real Estate
Buildings
123 Main Street
345 West Avenue
567 North Blvd
This works great, I can create a field in my document library called "Building" as a Managed Metadata field and point it at "Buildings" and it will let me set it to one of the Buildings above.
Now I want to add the tenants to the Buildings because I want the metadata on a file to include both the building that it relates to and the tenant it relates to. Because some files relate only to the entire building, while some relate to a specific tenant. And I want to be able to look at the document in the document library and see the tenant it relates to (not Building\Tenant - that's too long).
So now it looks like this:
Real Estate
Buildings
123 Main Street
John Smith
Mary Jones
345 West Avenue
Bill Johnson
XYZ Company
Sue Stein
567 North Blvd
Fred Fulton
Mary Jones
Andy Dufrane
So now I add a Tenant field as a Managed Metadata field on the library - but I have to point it to the Buildings TermSet because that's how it finds the tenants when I enter a value in the field. But there's nothing to stop the end user from picking a Building instead of a Tenant in the Tenant field, right?
I could create a second TermSet that has all the Tenants in it at the first level - but as you can see above, there is a Mary Jones (two different people) in two different Buildings.
So I suppose my question is - is there a way to have a hierarchy like this in the Term Store, but require that a field use the second level values only?
Or another way to structure this so I do keep the relation of Building:Tenant but make sure that only Buildings go in the Building field and only Tenants go in the Tenant field?
Related
Below is a feature in my Cypress test framework:
Background:
Given User is on the Customer Management landing Page
Scenario: #6 Filter by Customer Name
When User search for "Jane Doe" in the field Search Customer Name
Then the search by Customer Name returns only the information related to that customer
Scenario #6 above searches for a specific user & validates their information is displayed on the UI.
The issue I'm facing is that sometimes the database which I'm getting data from removes all data, so if I run this test & there's no data returned (Jane Doe doesn't exist), then the test will fail.
What I want to do is add a step where I can do the following:
Check if "Jane Doe" user exists
If "Jane Doe" exists, do nothing.
If "Jane Doe" doesn't exist, create the user, so I can search for them in Scenario #6.
The problem I'm facing is that there are multiple scenario's in this feature file.
Does it make sense to add this step to the Background like so, even if the "Jane Doe" user is only used in one specific test scenario:
Background:
Given "Jane Doe" user exists
And User is on the Customer Management landing Page
The "Jane Doe" user is only related to one test scenario here.
If you have a need for two backgrounds then you have a very good reason to make a new feature file. So from what I've seen in your post
Feature: Jane Doe features
A set of features ... using Jane Doe as an exemplar.
Background:
Given Jane Doe ...
And User is on the Customer Management landing Page
Scenario: Filter by Jane Doe
...
Rule of thumb: Need two backgrounds, you need a new feature.
I have a set of users who are common to all of the groups and projects in the company. Presently, I have to add those "common members" individually to each and every group or project. Is there any way to group them by a name, thereby adding them to groups or projects?
For example, A, B anc C are the common members and can be grouped by name X, so that X can be added, instead of individually adding A, B and C
PS: Users are from LDAP
Users are from LDAP
Aynthing LDAP related would be, interm of group synchronization, related to GitLab EE (Enterprise Edition)
But, if you can simply define main group for your common team, and subgroup for your specific teams/projects, you can use EE/CE Namespaces
In GitLab, a namespace is a unique name to be used as a user name, a group name, or a subgroup name.
http://gitlab.example.com/username
http://gitlab.example.com/groupname
http://gitlab.example.com/groupname/subgroup_name
For example, consider a user named Alex:
Alex creates an account on GitLab.com with the username alex; their profile will be accessed under https://gitlab.example.com/alex
Alex creates a group for their team with the groupname alex-team; the group and its projects will be accessed under https://gitlab.example.com/alex-team
Alex creates a subgroup of alex-team with the subgroup name marketing; this subgroup and its projects will be accessed under https://gitlab.example.com/alex-team/marketing
(Here you can replace 'alex-team' by 'common-team', or any other more descriptive name)
By doing so:
Any team member mentions Alex with #alex
Alex mentions everyone from their team with #alex-team
Alex mentions only the marketing team with #alex-team/marketing
Need help, I have an azure index called customer and have two fields in it customers & contacts, I have applied boost function for both the fields with boost 100 & 90, the problem is when I search any text it returns customer related relevance first and then contacts relevance.
Eg: If I search for "Johnson"
It will return all the customer details with Johnson first and then contact details even if the contact name matches "Johnson"
List of records displayed.
Record 1: This is customer
Johnson & tyson
Segment: Enterprise | Vertical: Healthcare | Country: US
Record 2: This is contact however it is associated with customer "Johnson and tyson"
Michael Walton
Customer:Johnson and tyson | Segment: Enterprise | Vertical: Pharmaceutical
Record 3: This is contact however it is associated with customer "Johnson and tyson"
Henri Vliegen
Customer:Johnson and tyson | Segment: Ent | Vertical: Pharmaceutical
Record 4: This is contact it is associated with customer "WST"
Henri Johnson
Customer:WST | Segment: Enterprise | Vertical: Pharmaceutical
So in this way records are displayed its most probably on scoring however I want the relevance name
to be displayed first like record 4 is contact and it should have been in place of record 2 since Johnson is the last name
I believe that it's because you're boosting with the same values, so it's like this:
if(Customer.Contains("Johnson") || (Contact.Contais("Johnson"))
{
//display
}
//PS: this statement is just to clarify that Contact and Customer name have the same importance.
Try to boost with different values, and I believe it will work. (100 for Customer and 90 for Details).
UPDATE
It seems that you are indexing first and last name separately. If you have a field "fullname" and boost through it, probably you'll get the expected result. Another option is create a scoring profile using those fields:
https://azure.microsoft.com/en-us/documentation/articles/search-get-started-scoring-profiles/
I read the question several times. While the question mentions that you have one index, the records displayed imply that you actually have two search indexes. Is this correct? I've been working on a training course for Azure Search, which discusses indexes and scoring in-depth.
At this time, Azure Search does not support cross-index queries. For that reason, if my understanding of your problem is correct, you'd have to run two queries: The first on the Customer index and the second on the Contacts index. Part of the reason that Azure Search is able to execute searches so quickly is because its a flattened out data structure, which allows for fast look-ups and queries. However, you're scenario implies something relational.
Am I misunderstanding your question?
I am seeing some weird behaviors when I use the search API from FourSquare. The site I am building lists all the nightclub spots (www.nationalvip.com)
When I search using 5 categories:
// 4bf58dd8d48988d121941735 - lounge
// 4bf58dd8d48988d11f941735 - nightclub
// 4bf58dd8d48988d1e7931735 - jazz club
// 4bf58dd8d48988d1e9931735 - rock club
// 4bf58dd8d48988d1d8941735 - gay clubs
Some of the nightclubs that are in category: 4bf58dd8d48988d1d8941735 do no show up.
So query like this:
/v2/venues/search?categoryId=4bf58dd8d48988d121941735,4bf58dd8d48988d11f941735,4bf58dd8d48988d1d8941735,4bf58dd8d48988d1e9931735,4bf58dd8d48988d1e7931735&ll=47.6097,-122.3331&radius=10000&intent=browse&v=20120801
Omits this venue:
https://foursquare.com/v/last-supper-club/40b13b00f964a520a7f61ee3
When I just use that category on it's own they do.
...?categoryId=4bf58dd8d48988d1d8941735&ll=47.6097,-122.3331&radius=10000&intent=browse&v=20120801
I have tried re-arranging the categories. I'd really like to avoid having to call the API many times with various categories.
Has anyone else seen this happen?
Your problem is with the location. The ll param you provided is for a location in San Francisco, but the venue you expect to appear is located in Seattle.
you can increase limit upto 100
I have done that and radius upto 100000meters(100km)
In my project I have to apply security based on a dimension attribute.
I think the best way to explain my scenario is with an example, if you need more info please request me and I'll love to told you if it will help me find a solution.
I have some main dimension, the dimcustomer, dimseller, fact, data and geographic.
The fact table are related with dimseller ids, the dimcustomer is related to the dimseller based on one dimseller specific attribute(CNPJ)(another dimensions that i didnt described are related the same way).
So my goal is to apply a role security based on the dimseller CNPJ, so then when the user related with that seller trys to browse data he will be allowed to view only the data that are related to his seller CNPJ.
Table example:
DIM Seller: DIM Customer FactTable
id name cnpj id name dimseller.cnpj dimseller.id dimcustomerid measure
1 ME 1234 1 guest1 1234 1 1 50,00
2 you 5678 2 guest2 5678 2 2 100,00
So if i login as ME i will be able to se that i have the customer guest1 with one sold product that was sold by 50 bucks.
Got my point?
What is the best way of doing it?
For now I'm considering the following guide: Claim Authentication with dynamic dimension security, but at that way I should define it attribute by attribute.
Is there a way that i can define this security need? I can easy filter the data using sql statements, but i have no ideia how i can apply this kind of security in the ssas.
Thank you guys anyway!
To apply security within a dimension, you need to use roles. For each roles, you can then specify which element in the cubes/dimensions that are available to that role. So, what you got to do is to create a role by CNPJ that will be able to view only their CNPJ.