Difference between revisions of "Opentaps Search Feature"
From Opentaps Wiki
Jump to navigationJump to search (New page: This is a conceptual document and the features described here are being implemented __TOC__ == Architecture == The basic idea is to use [https://www.hibernate.org/410.html Hibernate S...) |
m (Protected "Opentaps Search Feature": Sysop page [edit=sysop:move=sysop]) |
(No difference)
|
Revision as of 00:53, 26 June 2009
This is a conceptual document and the features described here are being implemented
Contents
Architecture
The basic idea is to use Hibernate Search to index data in the opentaps database, and then have a search tool which allows you to find results based on keywords rather than explicit parameters like on a find form. This is however different than Google Enterprise Search which is designed to index documents rather than database table values. However, the overall architecture should support integration to external search interfaces such as Google Enterprise Search fairly easily.
Now these are just my notes
Each domain has a search capability: DomainSearch: ie --> AccountsSearch.searchByKeyword(...) -> List<Account> SalesOpportunity.searchByKeyword(...) -> List<SalesOpportunity> so each application (CRM, purchasing, etc.) can have a SearchService which you can do setKeyWord(...); maybe some other set parameters. then search() and then getAccounts() getContacts() getSalesOpportunities() And then purchasing just has a search which allows you to getSuppliers() for now the links should be part of the view layer not of the search interface so you could have search be used by different view apps, or not at all--just be part of internal app hibernate search should be set to configure entities and fields and their weights so for example, if I want SalesOpportunity.opportunityName to weigh 10x as much as SalesOpportunity.description similar to applications/product/config/prodsearch.properties the other thing we need is AOP on the delegator to index the entities as they are stored by delegator and do it in 1 transaction prior to ofbiz committing so we don't open up more transactions here's a good thought experiment: what if we integrate in Google Search Appliance which indexes your documents so...let's say it's part of CRM and we want to link to documents so we drop a new DocumentDomainSearchInterface/Impl into opentaps CRM I guess what we need is a method in CRMSearchInterface/Impl which returns a link and a description for each result in the List<Document> and then implement Google Search Appliance as one kind of DocumentDomainSearchInterface