Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Google like Search

user621430Jul 18 2014 — edited Jul 18 2014

Hi,

I am working on a Data Warehousing project and one of my task is to provide business users with a google like search box for the data.

The below eg search terms should give an idea of what we are trying to accomplish.

Search TermExpected Result
Client RevenueA list of all clients and their revenues.   Basically a join between CLIENT and REVENUE tables.
European Client RevenueList of all european clients and their revenues - filter on location.
Platinum Client RevenueList of all platinum clients and their revenues - filter on client type.

I am thinking of having three types of meta-data tables:

1.  Entity level - store the list of all information/tags about the entity.

IDENTITYTAG
1DIM_CLIENTclient
2DIM_CLIENTcustomer
3DIM_CLIENTaccount
4FACT_EXPENSEexpense
5FACT_EXPENSEcost
6FACT_FORECAST_EXPENSEexpense
7FACT_FORECAST_EXPENSEforecast
8FACT_FORECAST_EXPENSEfuture
9FACT_FORECAST_EXPENSEcost

2.  Category level - Store at the column level, the distinct categories (for columns with low cardinality like location or category), along with their aliases.

IDENTITYCOLUMNVALUE_TAG
1DIM_CLIENTRegionEMEA
2DIM_CLIENTRegionLATAM
3DIM_CLIENTRegionNAM
4DIM_CLIENTRegionASPAC

Have an alias table for each of these records - NAM can represent North America, USA etc.

3.  Data level - An indexed table of all the text based columns in a table with its primary key/business key.

Something like this.

IDENTITYBUSINESS_KEYTEXT
1DIM_CLIENT1000022035societe generale
2DIM_CLIENT10000220351000022035
3DIM_CLIENT1000022035societe generale sa-paris head office
4DIM_CLIENT1000022035societe generale sa-paris head office
5DIM_CLIENT1000022035barep asset management
6DIM_CLIENT1000022035522110
7DIM_CLIENT10000220356029
8DIM_CLIENT1000022035societe generale sa
9DIM_CLIENT1000022035amc
10DIM_CLIENT100002203558410

Based on the search string, if it matches any of the tables, the related entity can be found and the query built (I know wishful thinking!!).

I just want a feedback on this approach - am I missing anything obvious.  Is there a better way of solving this problem.

Or are there any opensource tools that you might be aware of.

Feel free to suggest your ideas.

Thanks for your help.

-Anand

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 15 2014
Added on Jul 18 2014
1 comment
232 views