[ic] Custom SearchOP
Tom Tucker
tom at ttucker.com
Sun Sep 9 22:58:25 EDT 2007
Mac OS X 10.4.10
Interchange 5.4.0 (Tried with both Low and High Traffic settings)
Perl 5.8.6 threaded (PERL_SIGNALS="unsafe" set in the ENV)
MySQL 5.0.27-standard
Never had a problem starting daemon and no other odd behavior that I
have seen.
I have implemented the following Custom SearchOp according to the
instructions in the list and docs (I think ):
I have a column in my database, 'model', that can contain a comma
separated list of model years for which a particular part is applicable.
For example:
55
70-75
63,68-73
I need to be able to search on three fields, prod_group, model and category.
When I use a search of the form:
http://www.mydomain.com/scan/co=yes/fi=products/sf=prod_group/se=Mustang/op=eq/sf=model/se=68/op=modelyr/sf=category/se=RADIO/op=eq/tf=category,description
I get some products returned, but not the list I would expect. I added
the ::logDebug statement but don't get any output in the debug.log file.
In fact when I deliberately put in an error in SearchOp perl routine, I
don't even get an error message on catalog restart.
## Custom search op for model years. Takes a comma
## separated list of individual 2 digit model years
## or a range, ex: 55,63,65-68,70-73 and will
## determine if the search expression matches
## specifically or falls within the range.
CodeDef modelyr SearchOp
CodeDef modelyr Routine <<EOR
sub modelyr {
my ($self, $i, $pat) = @_;
::logDebug("modelyr: testing $self against $pat");
return sub {
my $this = shift;
my @pat = split(/,/, $pat);
#print " subtesting $this ";
foreach my $that ( @pat ) {
# Check to see if matches in a range of model years
if ( $that =~ /-/) {
my ($strt, $end) = split(/-/, $that);
#print "against $strt thru $end\n";
return 1 if ($this >= $strt && $this <= $end);
}
# Check to see if matches a single model year
#print "against $that\n";
return $this == $that;
}
};
}
EOR
Any assistance greatly appreciated.
Tom T.
More information about the interchange-users
mailing list