Re: Help - Relationships, Bindings, w/Full Text Search
Re: Help - Relationships, Bindings, w/Full Text Search
- Subject: Re: Help - Relationships, Bindings, w/Full Text Search
- From: Drew Thoeni <email@hidden>
- Date: Mon, 25 Sep 2006 22:56:02 -0400
On Sep 25, 2006, at 5:21 PM, Chuck Hill wrote:
On Sep 24, 2006, at 8:18 AM, Drew Thoeni wrote:
I'm using Frontbase's full text index to successfully return rows.
The main goal is to allow users to search large-full text columns,
returning enterprise objects. I have broken this into three
specific requirements as I can't seem to fulfill more than two,
regardless of approach.
1) Search for strings in a large text column using Frontbase's
full text index (requires SQL such as "...where SATISFIES
(full_text_index, search_string)...".
2) Allow user input and pass this as a parameter to the fileSpec
for a query.
3) Create or return EOs so as to have relationship information so
as to provide key value coding to related tables.
It seems I'm missing something as I can only meet two of the three
above at a time. Here are the options performed so far:
A) Using rawRowsForSQL I can do 1 and 2 above. I have converted
the results into enterprise objects but do not know how to perform
an addObjectToBothSidesOfRelationshipWithKey which would allow
access to related objects (such as code tables).
I am not following what your problem here is. If you have an eo as
converted from (1) and (2) why can you not do
eo.addObjectToBothSidesOfRelationshipWithKey(tag, "tag")?
Yep. A fair point and there's a good chance I'm looking at this
cockeyed. A more detailed explanation: I'm pulling back Report rows
using rawSQL. Once I get the rows back, I'm iterating through,
creating Report objects and setting their values based on data
retrieved in the SQL query. I then add these all to an array and can
display them nicely in a WORep.
I am not pulling back object IDs (primary and foreign keys) in the
SQL query because the OIDs are not part of the EOModel; I can't set
their values. So, given my knowledge (admittedly limited), I don't
have foreign keys in Report with which I could
addObjectToBothSidesOfRelationshipWithKey.
If I had these as complete objects I'd do as you suggest
aReport.addObjectToBothSidesOfRelationshipWithKey( aCompetitor,
"toCompetitor") and that would work great.
I'm sure there's some way of accomplishing this that I have not
considered. I've checked this list, Frontbase's list, and Practical
WebObjects. Perhaps I'm looking for the wrong things.
B) Using objectsWithFetchSpecificationAndBindings I can do 2 and 3
above. But EOModeler does not allow the "SATISFIES" term, even
when typing it into the fetchSepc in "Use Raw SQL Expression."
You would need to extend EOF to do that. Pierre Bernard's
qualifiers would be the place to start for this.
C) Using a stored procedure I can do 1 and 3 above. However, I do
not see a way of passing a user-defined search into the store
procedure from WebObjects.
No ideas on that.
Perhaps there is a much better and non-database specific way to
quickly search large text fields with features such a stemming,
wildcards, etc.
For a non-database specific way, see http://lucene.apache.org/ The
basic idea is much like handling the rawsRowsFromSQL result: you
index the text and store the entity name and PK with the text. Do
a Lucene search, and convert the entity name and PK back into an
EO. It takes a while to wrap your head around it.
Chuck
--
Practical WebObjects - for developers who want to increase their
overall knowledge of WebObjects or who are trying to solve specific
problems. http://www.global-village.net/products/
practical_webobjects
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden