Author Topic: Metadata Search Function  (Read 4556 times)

pmaxx

  • Freshman
  • *
  • Posts: 24
    • View Profile
    • Email
Metadata Search Function
« on: April 12, 2009, 04:39:02 pm »
Greetings!

My idea is this, a dedicated search function on html documents, coupled with the ability to create custom fields that are numeric, or drop down menus.

With that, the user could define "search template" documents with custom fields that could be attached to anything, contacts, companies, or uploaded files.  The dedicated search would use these "search templates" as forms for the search criteria.  When searching, these forms would provide AND, OR and NOT logic to the custom field values.

That would provide a framework to add rich metadata to any OpenGoo object, and to be able to search for that metadata.

What do you think?

- Paul

ignacio

  • Hero Member
  • *****
  • Posts: 1703
    • View Profile
Re: Metadata Search Function
« Reply #1 on: April 13, 2009, 03:16:41 pm »
I like it very much. It is very ambitious though and I hope we get there some day.

What we now have is "custom properties" (which are just a set of string name,value pairs) for objects and it can be searched on the search bar by the value. E.g. you can add a custom property to an object called "color" with value "blue". If you search for "blue" you will find that object. We are now working on allowing to define "custom fields" which are stricter in the sense that they have a type (string, number, set of values, etc) and that you define them for a type of object. E.g. contacts will have a field called "income" of type "number".

The search form you suggest could be an "advanced search" form that let you chose values for certain properties. And maybe as you suggest you could define templates that include only certain fields in the form.

pmaxx

  • Freshman
  • *
  • Posts: 24
    • View Profile
    • Email
Re: Metadata Search Function
« Reply #2 on: April 13, 2009, 07:55:00 pm »
I guess it probably is a lot of coding.  I was thinking that this "advanced search" could re-use as much existing code and objects as possible.  OpenGoo already has templates for the html documents.  I'm assuming (I haven't tried this yet) that a document template can have custom fields, so any document that is created from that template has the identical set of custom fields.  That gets you most of the way to the "search templates".  I envision a "Legal Documents" template, "Vendors" template, etc.  I can do this already, but I can't use those document templates in a search.

What made me think of this is I have tried knowledgetree document management system (open source, LAMP) and it provides lots of flexibility in defining metadata.  It was more than I need for my business.  OpenGoo seems to be in the sweet spot of having the 90% most needed features (document versioning, yes!), and leaving out the 10% "high end" features that make apps complex.

This metadata search would provide probably 99% of what single purpose applications like knowledgetree do.  Wow!

Advanced search would be really attractive when a lot of data is stored.  I have over 300 companies in the CRM app that I am migrating away from, and I'm taking my time migrating it because I'm not sure how to setup tags and workspaces to be able to find everything.  Over time, I will easily have thousands of companies and contacts.  I think some sort of metadata search wll be necessary at that point.

In the mean time, OpenGoo is awesome!

- Paul

pmaxx

  • Freshman
  • *
  • Posts: 24
    • View Profile
    • Email
Re: Metadata Search Function
« Reply #3 on: April 20, 2009, 04:10:48 pm »
I just read the thread regarding "better employee management" where people are looking for ways to categorize and list subcontractors and freelancers based on their skill level/skill set.  This is an application for metadata.
You create a Search Template called Programmers, and you create several custom fields, such as numeric proficiency fields for several languages.  In the html document you enter text explaining that proficiency is 0 to 9 where 0 = no ability and 9 = high ability (in the short term we don't check for valid values, but in the long term, we should be able to specify numeric type and range).  So we have 4 proficiency fields named PHP, Java, Perl, and Python.  Another custom field called punctuality which specifies how often they are late with assignments.  On and on, you get the picture...  We click a checkbox to identigy this  html document as a Search Template, and save it.  2 new fields need to be added to the documents table to make this work.  One field is a boolean data type, it just identifies this template as a search template.  The other field is a numeric or integer data type (I'm not a php guy, so I can't get specific here).  This field is automatically set to a unique (autoincremented) value.  That is the unique "search template ID".  To attach subcontractor metadata to a company or contact, we create a new html document from that template.  Whenever we create a new document from an existing search template, OpenGoo automatically copies the search template ID from the search template into the new document.  We fill in the custom fields with whatever metadata we have defined for that template, save the document, and attach it to the company or contact.  Now when we want to search for subcontractors, we pull up the subcontractor search template, and fill in the custom fields with the metadata that we are looking for.  Blank custom fields are ignored, and (thanks to some php and sql majic from the OpenGooRoos) OpenGoo searches for documents that match the search template ID, and whatever custom fields are filled in.
Probably a lot of code, but it would provide a LOT of power, and integrate smoothly into the OpenGoo linked objects framework.
In terms of selecting contacts to assign tasks,  if you could select this metadata search to populate the list of contacts to choose from, that would be sweet!  You could even have a special field in the search template document that would allow you to select which custom field would be used to order the list.
And because this uses the existing linked objects framework, this metadata search could be used for anything you store.

Pretty powerful stuff!

- Paul

pmaxx

  • Freshman
  • *
  • Posts: 24
    • View Profile
    • Email
Re: Metadata Search Function
« Reply #4 on: April 20, 2009, 04:36:57 pm »
Just one more thing.

The idea here is to be able to attach sets of metadata to objects.  For example, I do building automation/control systems.  I have company records for clients, vendors, and architects  that are into energy efficiency.  So instead of adding a bunch of energy efficiency fields to all companies and contact, I would like to be able to attach a pre-defined set of energy efficiency metadata (custom fields) to whatever company, contactor, or product datasheet that needs it.

- Paul

ignacio

  • Hero Member
  • *****
  • Posts: 1703
    • View Profile
Re: Metadata Search Function
« Reply #5 on: April 28, 2009, 12:09:33 pm »
Have you tried the custom reports and custom fields in 1.4 beta? I think it comes pretty close to what you need.

pmaxx

  • Freshman
  • *
  • Posts: 24
    • View Profile
    • Email
Re: Metadata Search Function
« Reply #6 on: April 28, 2009, 12:34:25 pm »
I haven't tried 1.4 beta.

I only have the production installation.  I will update to 1.4 stable as soon as it is released.

I'm looking forward to whatever goodies the GooRoos have in store!

 _paul