0
votes

We are developing a search tool and trying to manage the relevance using scoring profile.

Azure Cognitive Search instance with pricing tier - Standard and index has a scoring profile having 8 fields defined with functions for boosting values -

  1. Is_Active 2. MS_Status 3. Div_Flag 4. FeedBack_Rating 5. ExperienceLevel 6. CostRating 7. PaymentScores 8. AcceptanceScore

and now trying to add one more field ( Is_Cross_Geographies_Active ) However received below error -

{"error":{"code":"","message":"The request is invalid. Details: definition : scoringFunctionCount must be between 0 and 8. Actual value: 9\r\n"}}

Upon further research got the below document explaining the reason behind it states maximum function allowed in scoring profile, can be 8

https://docs.microsoft.com/en-us/azure/search/search-limits-quotas-capacity

Question - In case we need to add more fields, shall we look to combine multiple fields into single field i.e. a derived field and then add that field into scoring profile? Also, for now we have added flags and status as numeric fields on index i.e. 1,0 and added as part of boosting function with constant boosting. Please advice if any different approach should be adopted here?

1
Conceptually, your proposed approach could work, but it depends on the details. Can you edit your question to provide more details about your scenario? Also, would text weights help? For most pricing tiers, you can have up to 1000 fields with text weights assigned.Bruce Johnston
I have updated the detail Bruce also please note the link for ms doc shared above shows all pricing tier has limit of function field of 8 for Maximum functions per profiledewraj singh
There's a limit of 8 scoring functions, not 8 fields. Each function can only apply to one field, but text weights in the same scoring profile can apply to up to 1000 searchable fields. Can you please edit your question to provide some details on what you're trying to accomplish? It isn't clear what scenario requires you to have so many scoring functions. It would also be good to understand what scoring functions you're trying to use (tag boosting, distance, magnitude, freshness, or all of them?)Bruce Johnston
I have updated the question with more detail and specific fields name as well and since those are self explanatory could help to understand the purpose. please could you further advice Bruce. thanks!dewraj singh

1 Answers

1
votes

I'm assuming you're looking to apply factors that influence the relevance score of full-text search results, and not looking for a strict ordering. If it were the latter, I'd suggest using $orderby.

Since all your boosting criteria can be expressed as numbers and it sounds like you're using magnitude boosting, there is an opportunity to work around the limit as you suggested. If you're able to pre-calculate a boosting factor from all the other fields before or during indexing, you could then use a single scoring function to boost on that. This would probably improve the performance of scoring as well, although offhand I don't have any data to quantify this.