On 5/5/2010 9:14 AM, mattmendick wrote:

We have set up a WFS service connected with postgres loaded up with some
substantial datasets of ~120 million rows. We have run into users wanting to
utilize the filter "PropertyIsLike". The search string and a wildcard
character are specified, and mapserver does a search against postgres,
something like:

WHERE myColumn LIKE "SearchString%"

if the search string was SearchString* and the wildcard set to *. There is
an index on myColumn. The users then tried putting the wildcard at the
beginning of the search string, and this query takes forever as the index on
myColumn no longer matters.

Postgres 8.3 has a full-text search feature (and I believe earlier versions
had this functionality through the use of plugins and/or extensions).  The
documentation is here:
http://www.postgresql.org/docs/8.3/static/textsearch.html

Basically, you index columns as before, but feeding it the output of a
ts_vector() function, where the input is the column you are indexing.  In
order to search on the column, you need to change the WHERE clause to
something like:

WHERE myColumnNowIndexed @@ ts_query('SearchString')

Is there any way to accomplish this in mapserver? I understand from this
page of ms documentation (http://mapserver.org/input/vector/postgis.html)
that it is possible to substitute the bbox parameter of a search in the DATA
entry of a mapfile. Is it possible to alter the WHERE clause of the search
that deals with attribute matching?

Thanks a lot!


How do you do it now?  Do you have something in place using:

> WHERE myColumn LIKE "SearchString%"


I suppose what you're asking is, whats the corresponding variable to !BOX!?

-Andy
_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to