Have you tried the performance of the ProductSearch stuff, or more specifically
the keyword search part of it, to see if it is adequate?
This does sound like a special case where direct JDBC is the way to go. That
just means you'll have some development to do as you can't use the tricks in
the entity engine. And yes, that will require some technical effort to get the
pieces tied together and there is no best practice or magic way to do it, so
you'll just to buckle down and build whatever is needed.
You might try the EntityWhereString as a last resort before directly using
JDBC. That takes a free form string that goes into the where clause.
-David
Richard Fleming wrote:
David -
Maybe you can help me...
I need to query the products table and return 20 or so possible product ids from the
following customer input - "I need a maytag belt set for my maytag washer" The
columns involved in the query are productid, internal_name, brand_name, description,
long_description. The database has 1mil+ productid's and the the results need to display
in less than 5 seconds.
my solution was to create a full text search of a new column in the products
database utilizing the fts or tsearch2 plugin to postgres. The performance is
great and returns the results in milliseconds The problem is the operator for
the sql statement is @@ which the entity engine doesn't recognize.
Do you know of another way to perform this.?
Thanks
Rick
David E Jones <[EMAIL PROTECTED]> wrote:
The point would be to step back and define what sort of data you'd like to get from the database and find another way for form the query.
-David
Richard Fleming wrote:
David,
Thanks for the reply. I'd love to use the entity engine. But because the @@
operator for tsearch's isn't part of the jdbc driver for postgres, I think I'm
stuck. Is there a way within the entity engine to create a custom sql statement
and then add it as an entity-condition tag or whatever?
If not, I'll follow your other advice.
Thanks again
Rick
David E Jones wrote:
This is more of a question about JDBC and FTL, ie somewhat independent of OFBiz.
The freemarker.org site or searching on google might have some helpful tips on
using a ResultSet object with FTL. I'm not aware of anything, but haven't
looked. If you can't find anything there I'd recommend creating an
implementation of the Iterator or List interfaces to wrap the ResultSet object,
like we have with the EntityListIterator in OFBiz.
You could also write some code in a bsh script or whatever to go through the
ResultSet and put the data in a List of Maps that is easy to traverse in FTL.
Actually, what I would do is step back and review the business level
requirement and find an easier way to do the query so that you can use the nice
easy tools and patterns already established...
-David
Richard Fleming wrote:
Rodrigo,
Thanks for the reply.. but I can't use the delegator object. I have to use a jdbc connection so that I can query the database with a non standard operator (@@). The delegator doesn't support calling this operator. My life would be much easier if it did. So I create a database connection using the sqlprocessor and return a java.sql.resultset which I add to the context.
I'm reading through the Freemarker docs but it would help to see an example in
ofbiz which utilizes a resultset.
<#list rs1 as parts>
Where rs1 is a java.sql.resultset object.
Do you have any ideas?
Rick
Rick
Rodrigo Souza wrote: User delegator to data layer.
Not use in .ftl files.
2007/8/6, Richard Fleming :
Hello all-
I've put together a bsh script that puts a java.sql.resultset into the context.
How do I create a list tag in my freemarker file to display the resultset?
Thanks
Rick