Test Your Question Equivalence Rule

When you create a question equivalence rule, you can check that it matches all the questions that you want to include in the question equivalence class, and that it does not match questions that belong to other question equivalence classes. The GetResources action has several filters that you can use to test your rules.

You can also use the TestRule action to test whether a particular set of questions matches a rule that you specify. In this case, you do not need to have indexed the questions or the question equivalence rule.

NOTE:

The TestRule action can test only rules that use simple text (with any Boolean and proximity expressions). You cannot test FieldText rules in this way. For more information about FieldText rules, see Special Rule Types.

Find Questions that Do Not Match the Rule

You can add the question equivalence rule text as a text filter in GetResources, to find questions that match or do not match the rule. You can also specify a list of IDs for questions that you want to match the rule in the IDs parameter.

TIP:

You can retrieve a list of question IDs and the rule for a question equivalence class by sending a GetResources action with Type set to question_equivalence_class.

To test whether the rule matches the questions in the question equivalence class, set the text filter to NOT(RuleText), and set IDs to a list of IDs of the questions in that class.

For example:

http://localhost:7000?Action=GetResources&Type=question&IDs=9706856188043740111,8129920660480699726,3067998369792637739&Filter=%7B%20%22text%22%20%3A%20%22NOT(updates%20AND%C2%A0MyCompany)%22%20%7D

The Filter parameter takes a percent-encoded JSON object, which contains the filters to apply. In this case, the unencoded JSON object is:

{ "text" : "NOT(updates AND MyCompany)" }

This action returns any questions in the list of IDs that do not match the question equivalence rule updates AND MyCompany.

Find Questions in Other Classes that Match the Rule

After you create the question equivalence class and add the rule, you can also use GetResources to find out if your rule matches any questions that do not belong to the class, by using the not_associated_with filter.

For example, for a GetResources action with Type set to question, the following filter object matches questions that match the rule updates AND MyCompany, and that do not belong to the question equivalence class with ID 1429393462892614629.

{ 
   "text" : "updates AND MyCompany",
   "not_associated_with": [
      {
         "ids": [
            "1429393462892614629"
         ],
         "type": "question_equivalence_class"
      }
   ]
}

This filter returns questions that match the rule that already belong to a different question equivalence class. This might indicate that your rule is not restrictive enough.

TIP:

This filter also returns any questions that match the rule and that do not belong to a question equivalence class. If you want to find only questions that belong to a different question equivalence class, you can add an additional state filter to find questions in the answered state.

Test Whether Questions Match a Specified Rule

You can use the TestRule action to test questions and rules that you have not added to the Answer Bank Agentstore. This action allows you to test rules and questions before you index them, to save indexing time, and reindexing time if you need to change the rule.

To use TestRule, you specify the questions in a JSON object in the Questions parameter, and the rule in the Rule parameter. You must also set SystemName to the name of the Answer Bank system.

For example:

action=TestRule&SystemName=MyAnswerBank&Questions={"text":["Why is the sky blue?","What causes the sky to appear blue?","How do I return a defective item?"],"ids":["7660794084496396635","15927917885427259786","14042282250303108454"]}&Rule=sky AND blue

This action tests whether the questions Why is the sky blue?, What causes the sky to appear blue?, and How do I return a defective item?, and the questions with IDs 7660794084496396635, 15927917885427259786, and 14042282250303108454 match the rule sky AND blue.

The action returns the rule, with a matched property that contains the list of matching questions, and the not_matched property that contains any questions in the request that do not match the rule.

{
   "rule": "sky AND blue",
   "matched": {
      "text": [
         "Why is the sky blue?",
         "What causes the sky to appear blue?"
      ],
      "id" [
         "15927917885427259786",
         "14042282250303108454"
      ]
   },
   "not_matched": {
      "text": [
         "How do I return a defective item?"
      ],
      "id": [
        "7660794084496396635"
      ]
   }
}

_HP_HTML5_bannerTitle.htm