[Geomoose-users] GeoMoose 3 - Search

Dan Little theduckylittle at gmail.com
Wed Mar 18 19:55:21 PDT 2020


Ack! It was very close. Note the "[query]" in the return. It's expecting
the OR statements to be wrapped like: "['or', ... field 1 ... , ... field
2...]":

        prepareFields: function (fields) {
            // reformat the fields for the query engine,
            //  "*stuff*" will do a case-ignored "contains" query.
            var query = ['or'];
            for(var i = 0, ii = fields.length; i < ii; i++) {
                if(fields[i].value !== '' && fields[i].value !== undefined)
{
                    query.push({
                        comparitor: 'ilike',
                        name: fields[i].name,
                        value: '%' + fields[i].value + '%'
                    });
                }
            }
            return [query];
        }

See the Gist here:
https://gist.github.com/theduckylittle/c659413dc4fdcbcd793bd2148202332f

On Tue, Feb 11, 2020 at 6:28 PM Christopher Hughes <chughes at co.lincoln.or.us>
wrote:

> Hi Dan,
>
> I'm having trouble getting this working. I've tried several combinations
> of the code below. When I omit the fields parameter at the end there's no
> box to input a search,
> but with it I'm unsure about how to adjust it for searching multiple
> fields. Depending on how what I try I either get a comparitor error or an
> error saying prepareFields/queryFields
> isn't defined. Do you have any ideas?
>
> Working in the demo:
> app.registerService('search', SearchService, {
>
>     prepareFields: function(fields) {
>         var query = ['or']; // adding or to the beginning should make it
> conditional.
>        var queryFields = ['OWNER_NAME', 'OWN_ADD_L1', 'OWN_ADD_L3'];
>         var searchValue = fields[0].value;
>         for(var i = 0, ii = queryFields.length; i < ii; i++) {
>                 query.push({
>                     comparitor: 'ilike',
>                     name:queryFields[i],
>                     value: '%' + searchValue + '%'
>                 });
>         }
>         return query;
>     },
>     fields: [
>         {type: 'text', label: 'City/State/ZIP', name: 'prepareFields'}
>     ],
>     searchLayers: ['vector-parcels/parcels']
>
>
> });
>
>
> Thanks,
> Chris
>
>
>
>
>
>
>
>
>
> On Thu, Feb 6, 2020 at 3:07 PM Dan Little <theduckylittle at gmail.com>
> wrote:
>
>> Pass it in as an option on app.js.
>>
>> On Thu, Feb 6, 2020, 18:04 Christopher Hughes <chughes at co.lincoln.or.us>
>> wrote:
>>
>>> Hi Dan,
>>>
>>> Do you mean changing this in the search.js file or trying to overwrite
>>> this in app.js when creating the individual search service?
>>>
>>> Thanks,
>>>
>>> Chris
>>>
>>> On Wed, Feb 5, 2020 at 6:42 AM Dan Little <theduckylittle at gmail.com>
>>> wrote:
>>>
>>>> Hi Chirs,
>>>>
>>>> You can make that happen by overriding "prepareFields" in the options.
>>>>
>>>> This is a little rough and untested but I believe this would do it:
>>>>
>>>> prepareFields: function(fields) {
>>>>         var query = ['or']; // adding or to the beginning should make
>>>> it conditional.
>>>>        var queryFields = ['PIN', 'NAME', 'STREETNAME'];
>>>>         var searchValue = fields[0].value;
>>>>         for(var i = 0, ii = queryFields.length; i < ii; i++) {
>>>>                 query.push({
>>>>                     comparitor: 'ilike',
>>>>                     name:queryFields[i],
>>>>                     value: '%' + searchValue + '%'
>>>>                 });
>>>>         }
>>>>         return query;
>>>>     };
>>>>
>>>> On Tue, Feb 4, 2020 at 3:33 PM Christopher Hughes <
>>>> chughes at co.lincoln.or.us> wrote:
>>>>
>>>>> Does anyone know if there's a way to configure a search service in
>>>>> geomoose 3 that searches
>>>>> over multiple fields in a single box?
>>>>>
>>>>> I'd like to be able to configure a simple search that allows users to
>>>>> enter information in a single box
>>>>> and find results that match information in any of the fields you
>>>>> specify. This way they don't need to
>>>>> know as much about how your data is organized. My current workaround
>>>>> is to just create a new
>>>>> dataset that has all the fields I want, concatenated into a single
>>>>> field, and set geomoose to search
>>>>> that in the service. This gets the job done but I'd rather not modify
>>>>> the data if I don't have to.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Chris
>>>>>
>>>>> --
>>>>> Chris Hughes
>>>>>
>>>>> GIS Analyst
>>>>> Lincoln County Surveyor Department
>>>>> 880 NE 7th St. l Newport, OR 97365
>>>>> Tel: (541) 574 1283
>>>>> _______________________________________________
>>>>> Geomoose-users mailing list
>>>>> Geomoose-users at lists.osgeo.org
>>>>> https://lists.osgeo.org/mailman/listinfo/geomoose-users
>>>>
>>>>
>>>
>>> --
>>> Chris Hughes
>>>
>>> GIS Analyst
>>> Lincoln County Surveyor Department
>>> 880 NE 7th St. l Newport, OR 97365
>>> Tel: (541) 574 1283
>>>
>>
>
> --
> Chris Hughes
>
> GIS Analyst
> Lincoln County Surveyor Department
> 880 NE 7th St. l Newport, OR 97365
> Tel: (541) 574 1283
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/geomoose-users/attachments/20200318/6504399d/attachment.html>


More information about the Geomoose-users mailing list