Better to use the Memory querying methods such as findAllQuery() or search() that take JPQL or Criteria (from JPA) than use SQL. Then you get proper queries for proper objects.
You will want to query objects with #instantiation relationships to #conversation or #sentence
With loadAsAIML() 'get my Products' will only match the user question 'get my Products' and nothing else.
With loadAsChatlog() it may also match other questions like 'please get my products', 'get products' if it is the best match.
If you have both the response and the script, the response will be used first for exact matches, (but this is configurable in the Language class).
The basic rules are (which are configurable)
- check exact response match
- if none, process scripts/states
- if none, look for matching pattern response
- if none, look for similar matching question response
- if none, use default response
- if none, mimic question back to user