This is actually very dependent on what and how you expect your users to search for, as well as the search experience your are looking for.
What is clear for now is that you need to have two types of records: state and state-region records. Now what we need to define is where they should live (same index, separate indices) and what attributes they should have.
The very first question that needs to be answered is whether this data is to be used as a filter for some other data or if it is the main content we are searching for. If it is to be used as filters, then the state and state-region data should probably be part of the data that we want actually to search for.
Assuming that this data is the main content we are searching for, a critical question that needs to be answered is “Should results for a state-region appear when a user types in a region?”. E.g. if a user types “Texas”, should the dropdown show just Texas, or should it also show state-regions like South Texas, East Texas, etc. ? You should also consider the opposite question: “Should state results appear when a user searches for a state-region”. For instance, suppose a user types in “Panhandle”, should the “Florida” record appear in the search results?
Answering these questions will help us define what must be present in your state and state-region records. If you want state-regions to appear when a user types in a state, that means that your state region records must include the state in their data. While if you want regions to appear when a user types in a state-region, like panhandle, then all the names of all the different state-regions need to be present in the state record.
Another question that needs to be tackled would be “How do I want to decompose my search results?”. There are multiple ways of presenting this state and state-region data, and some might provide results to your users in a way that they find clear while other designs might confuse them for certain queries. For instance, you could have the hierarchy that you described:
- South Texas
- North Texas
- North Florida
Or you could decompose your search like this:
- South Texas (Texas)
- North Texas (Texas)
- Panhandle (Florida)
- North Florida (Florida)
The first decomposition introduces a nice visual hierarchy between states and regions, but will force you to have a very strange ranking which will probably have a negative impact on the relevance of your results. It also forces you to have region data in state records.
The second decomposition may look a bit more awkward on the first search, but will yield very clear results to the user. It will be evidently clear what kind of results they are looking at, and the ranking can be easily managed.
Let me know if that helped you clearly decompose your users needs!