On 2017-08-25 17:43, Sannyasin Brahmanathaswami via use-livecode wrote:
@ Mark Waddingham
Awesome! thanks, I will test this later…
Yes, my solution, at the urging of our Cohorts of the Round Table
LiveCode Data Diggers,
who earlier said "Don't go looking for your needles in arrays." (
I just reformulated the SQL quaryand passed it back "up" to the stack
script which fetched the original complete data set.
That worked, but there are many use cases where this will be a better
solution.
in the context of songs I guess we iterate several times through this
example to a case where
[title %like% "laughter" OR subtitle %like% "laughter" OR description
%like% "laughter"
AND
genre = "Songs By Nerds"
AND
theme = "Never Say Can't"
requires three trips to the mall:
array contains "Laughter"
AND
array contains " Songs By Nerds "
AND
array contains "Never Say Can't"
But these are very small data sets, relatively speaking.. so it will
be fast. But what serialization results is unclear…
Which is better (using arrays, or the DB direct) largely depends on the
size of the dataset.
If you have a very large dataset, then you are going to run out of
memory if you try and load it all into RAM - so a better approach (as
you have done) is to bind the search to SQL queries on the DB. This is
very scalable; and if you back everything you do with the (large)
dataset by the DB, you get 'only needing what you need in RAM at any one
time' essentially for 'free' (although, at the expense of needing to
abstract through SQL I suppose).
If you have a small dataset (which isn't going to grow, or only grow
very slowly) then it probably makes no difference, and you are better
off using whichever is easier to code.
In terms of generalizing that function - then the key line which checks
whether an element matches is:
else if tElement contains pNeedle then
One could imagine that this could be an arbitrary predicate - pNeedle
doesn't have to be a string, so could be an array representing a AND /
OR style query; or could be a regex (in which case you'd use matchText).
Warmest Regards,
Mark.
--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode