You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Aakanksha Gupta <aa...@gmail.com> on 2018/02/18 13:27:28 UTC

Getting the error - The field '*********' does not support spatial filtering

Hi all,
I'm a newbie to Solr. I'm trying to use it for GeoSpatial Search and I'm
facing an issue while using it. I've tried using the new 'location' field
type(<fieldType name="location" class="solr.LatLonPointSpatialField"
docValues="true"/>) as well as the deprecated solr.LatLonType fieldtype,
but I always get the error:

org.apache.solr.common.SolrException: The field latlong does not
support spatial filtering

Here's a snippet of my field definition in schema.xml in the conf folder of
my core:

<field name="id" type="string" indexed="true" stored="true" required="true"
multiValued="false" />
    <!-- docValues are enabled by default for long type so we don't need to
index the version field  -->
    <field name="_version_" type="plong" indexed="false" stored="false"/>
    <field name="_root_" type="string" indexed="true" stored="false"
docValues="false" />
    <field name="_text_" type="text_general" indexed="true" stored="false"
multiValued="true"/>
    <field name="driverid" type="pint" indexed="true" stored="true" />
    <field name="latlong" type="location" indexed="true" stored="true" />
    <field name="time" type="string" indexed="false" stored="true" />
    <field name="timestamp" type="plong" indexed="true" stored="true" />
    <field name="latlong2" type="loc" indexed="true" stored="true" />
    <field name="location_0_coordinate" type="double" indexed="true"
stored="true" />
    <field name="location_1_coordinate" type="double" indexed="true"
stored="true" />


And here are the field type definitions:
    <fieldType name="loc" class="solr.LatLonType"
subFieldSuffix="_coordinate"/>
    <fieldType name="location" class="solr.LatLonPointSpatialField"
docValues="true"/>

Here's the Query I'm running:
http://localhost:8983/solr/geo2/select?wt=json&q=:&fq={!geofilt
sfield=latlong}&pt=-6.08165,145.8612430&d=100

http://localhost:8983/solr/geo2/select/?q=*:*&fq={!geofilt}&sfield=latlong2&pt=-6.08165,145.8612430&d=100&wt=json

And here's the Java snippet I'm using to insert data:
        String urlString = "http://localhost:8983/solr/geo2";
        SolrClient solr = new HttpSolrClient.Builder(urlString).build();
        SolrInputDocument document = new SolrInputDocument();
        document.addField("id", UUID.randomUUID().toString());
        document.addField("driverid", "1");
        document.addField("latlong", "-6.081689,145.391881");
        document.addField("time", "7:01:17");
        document.addField("timestamp", Long.valueOf("1518908477190"));
        document.addField("latlong2", "-6.081689,145.391881");
        document.addField("location_0_coordinate",
Double.valueOf(-6.081689));
        document.addField("location_1_coordinate",
Double.valueOf(145.391881));
        UpdateResponse response = solr.add(document);
        solr.commit();
        response.getQTime();


I've attached my schema.xml file herewith. Can someone let me know what I'm
doing wrong?

Re: Getting the error - The field '*********' does not support spatial filtering

Posted by Erick Erickson <er...@gmail.com>.
bq:  I was able to get it to work with after I removed my schema.xml
and modified the managed-schema to add my fields

That's fine. You have three options and they can be confusing:
1> use classic schema (i.e. schema.xml). Requires that you replace the
managed schema definition with classic in solrcofnig.xml, it'll look
something like:
 <schemaFactory class="ClassicIndexSchemaFactory"/>

2> use managed scheama

2a> without "field guessing". In this mode you take out stuff like
"add-unknown-fields-to-the-schema" in solrconfig.xml (really the
chain). You can hand-edit the managed-schema file freely. HOWEVER, you
should be very controlled when mixing hand-editing the managed-schema
file with using the managed-schema API to modify it. The
managed-schema API will overwrite the config with whatever is in
memory so your hand-edits may be lost.

2b> Allow Solr to try to infer fields based on the first one
encountered, "schemaless mode". This is the _default config in 7x.

See the "Schema Factory Definition in SolrConfig" section of the
reference guide.

Best,
Erick

On Mon, Feb 19, 2018 at 5:28 AM, Aakanksha Gupta
<aa...@gmail.com> wrote:
> Thanks David. That was helpful. I was able to get it to work with after I
> removed my schema.xml and modified the managed-schema to add my fields. I'm
> not sure if this is the right thing to do, but this is how I got it to work
> :)
>
> On Mon, Feb 19, 2018 at 7:54 AM, Howe, David <Da...@auspost.com.au>
> wrote:
>
>> Hi Aakanksha,
>>
>>
>>
>> We use the following for geo queries which works for us:
>>
>>
>>
>> /solr/core/select?defType=edismax&indent=on&ps=0&start=
>> 0&wt=json&sow=true&hl=on&hl.fl=*&fq=%7B!geofilt%7D&pt=-6.
>> 08165,145.8612430&d=10&sfield=geoLocation&sort=geodist()%
>> 20asc&rows=10&fl=*,score,distance:geodist()
>>
>>
>>
>> This gives us the results closest to the provided point in order of their
>> distance from the point.
>>
>>
>>
>> Our field definition is:
>>
>>
>>
>>   echo "$(date) Creating geoLocation field"
>>
>>   curl -X POST -H 'Content-type:application/json' --data-binary '{
>>
>>     "add-field":{
>>
>>        "name":"geoLocation",
>>
>>        "type":"location",
>>
>>        "stored":true,
>>
>>        "indexed":true
>>
>>     }
>>
>>   }' http://localhost:8983/solr/core/schema
>>
>>
>>
>> We are running Solr 7.1.0.
>>
>>
>>
>> Hope this helps.
>>
>>
>>
>> Regards,
>>
>>
>>
>> David
>>
>>
>>
>>
>>
>> *From:* Aakanksha Gupta [mailto:aakankshagupta2000@gmail.com]
>> *Sent:* Monday, 19 February 2018 12:27 AM
>> *To:* solr-user@lucene.apache.org
>> *Subject:* Getting the error - The field '*********' does not support
>> spatial filtering
>>
>>
>>
>> Hi all,
>>
>> I'm a newbie to Solr. I'm trying to use it for GeoSpatial Search and I'm
>> facing an issue while using it. I've tried using the new 'location' field
>> type(<fieldType name="location" class="solr.LatLonPointSpatialField"
>> docValues="true"/>) as well as the deprecated solr.LatLonType fieldtype,
>> but I always get the error:
>>
>>
>> org.apache.solr.common.SolrException: The field latlong does not support spatial filtering
>>
>> Here's a snippet of my field definition in schema.xml in the conf folder
>> of my core:
>>
>> <field name="id" type="string" indexed="true" stored="true"
>> required="true" multiValued="false" />
>>     <!-- docValues are enabled by default for long type so we don't need
>> to index the version field  -->
>>     <field name="_version_" type="plong" indexed="false" stored="false"/>
>>     <field name="_root_" type="string" indexed="true" stored="false"
>> docValues="false" />
>>     <field name="_text_" type="text_general" indexed="true" stored="false"
>> multiValued="true"/>
>>     <field name="driverid" type="pint" indexed="true" stored="true" />
>>     <field name="latlong" type="location" indexed="true" stored="true" />
>>     <field name="time" type="string" indexed="false" stored="true" />
>>     <field name="timestamp" type="plong" indexed="true" stored="true" />
>>     <field name="latlong2" type="loc" indexed="true" stored="true" />
>>     <field name="location_0_coordinate" type="double" indexed="true"
>> stored="true" />
>>     <field name="location_1_coordinate" type="double" indexed="true"
>> stored="true" />
>>
>> And here are the field type definitions:
>>     <fieldType name="loc" class="solr.LatLonType"
>> subFieldSuffix="_coordinate"/>
>>     <fieldType name="location" class="solr.LatLonPointSpatialField"
>> docValues="true"/>
>>
>> Here's the Query I'm running:
>> http://localhost:8983/solr/geo2/select?wt=json&q=:&fq={!geofilt
>> sfield=latlong}&pt=-6.08165,145.8612430&d=100
>>
>> http://localhost:8983/solr/geo2/select/?q=*:*&fq={!
>> geofilt}&sfield=latlong2&pt=-6.08165,145.8612430&d=100&wt=json
>>
>> And here's the Java snippet I'm using to insert data:
>>         String urlString = "http://localhost:8983/solr/geo2";
>>         SolrClient solr = new HttpSolrClient.Builder(urlString).build();
>>         SolrInputDocument document = new SolrInputDocument();
>>         document.addField("id", UUID.randomUUID().toString());
>>         document.addField("driverid", "1");
>>         document.addField("latlong", "-6.081689,145.391881");
>>         document.addField("time", "7:01:17");
>>         document.addField("timestamp", Long.valueOf("1518908477190"));
>>         document.addField("latlong2", "-6.081689,145.391881");
>>         document.addField("location_0_coordinate",
>> Double.valueOf(-6.081689));
>>         document.addField("location_1_coordinate",
>> Double.valueOf(145.391881));
>>         UpdateResponse response = solr.add(document);
>>         solr.commit();
>>         response.getQTime();
>>
>>
>>
>> I've attached my schema.xml file herewith. Can someone let me know what
>> I'm doing wrong?
>>
>>
>>
>> David Howe
>> Java Domain Architect
>> Postal Systems
>> Australia Post
>>
>> Level 16, 111 Bourke Street
>> <https://maps.google.com/?q=Level+16,+111+Bourke+Street%0D+Melbourne%0D+VIC%0D+3000&entry=gmail&source=g>
>> Melbourne
>> <https://maps.google.com/?q=Level+16,+111+Bourke+Street%0D+Melbourne%0D+VIC%0D+3000&entry=gmail&source=g>
>> VIC
>> <https://maps.google.com/?q=Level+16,+111+Bourke+Street%0D+Melbourne%0D+VIC%0D+3000&entry=gmail&source=g>
>> 3000
>> <https://maps.google.com/?q=Level+16,+111+Bourke+Street%0D+Melbourne%0D+VIC%0D+3000&entry=gmail&source=g>
>>
>> T  0391067904
>>
>> M 0424036591
>>
>> E  David.Howe@auspost.com.au
>> [image: Australia Post website] <https://auspost.com.au>
>> [image: StarTrack website] <https://startrack.com.au/>
>> [image: Follow us on Twitter] <https://twitter.com/auspost> [image: Like
>> us on Facebook] <https://www.facebook.com/australiapost> [image: Connect
>> with us on LinkedIn] <https://www.linkedin.com/company/australia-post>
>>
>> Australia Post is committed to providing our customers with excellent
>> service. If we can assist you in any way please telephone 13 13 18 or visit
>> our website.
>>
>> The information contained in this email communication may be proprietary,
>> confidential or legally professionally privileged. It is intended
>> exclusively for the individual or entity to which it is addressed. You
>> should only read, disclose, re-transmit, copy, distribute, act in reliance
>> on or commercialise the information if you are authorised to do so.
>> Australia Post does not represent, warrant or guarantee that the integrity
>> of this email communication has been maintained nor that the communication
>> is free of errors, virus or interference.
>>
>> If you are not the addressee or intended recipient please notify us by
>> replying direct to the sender and then destroy any electronic or paper copy
>> of this message. Any views expressed in this email communication are taken
>> to be those of the individual sender, except where the sender specifically
>> attributes those views to Australia Post and is authorised to do so.
>>
>> Please consider the environment before printing this email.
>>

Re: Getting the error - The field '*********' does not support spatial filtering

Posted by Aakanksha Gupta <aa...@gmail.com>.
Thanks David. That was helpful. I was able to get it to work with after I
removed my schema.xml and modified the managed-schema to add my fields. I'm
not sure if this is the right thing to do, but this is how I got it to work
:)

On Mon, Feb 19, 2018 at 7:54 AM, Howe, David <Da...@auspost.com.au>
wrote:

> Hi Aakanksha,
>
>
>
> We use the following for geo queries which works for us:
>
>
>
> /solr/core/select?defType=edismax&indent=on&ps=0&start=
> 0&wt=json&sow=true&hl=on&hl.fl=*&fq=%7B!geofilt%7D&pt=-6.
> 08165,145.8612430&d=10&sfield=geoLocation&sort=geodist()%
> 20asc&rows=10&fl=*,score,distance:geodist()
>
>
>
> This gives us the results closest to the provided point in order of their
> distance from the point.
>
>
>
> Our field definition is:
>
>
>
>   echo "$(date) Creating geoLocation field"
>
>   curl -X POST -H 'Content-type:application/json' --data-binary '{
>
>     "add-field":{
>
>        "name":"geoLocation",
>
>        "type":"location",
>
>        "stored":true,
>
>        "indexed":true
>
>     }
>
>   }' http://localhost:8983/solr/core/schema
>
>
>
> We are running Solr 7.1.0.
>
>
>
> Hope this helps.
>
>
>
> Regards,
>
>
>
> David
>
>
>
>
>
> *From:* Aakanksha Gupta [mailto:aakankshagupta2000@gmail.com]
> *Sent:* Monday, 19 February 2018 12:27 AM
> *To:* solr-user@lucene.apache.org
> *Subject:* Getting the error - The field '*********' does not support
> spatial filtering
>
>
>
> Hi all,
>
> I'm a newbie to Solr. I'm trying to use it for GeoSpatial Search and I'm
> facing an issue while using it. I've tried using the new 'location' field
> type(<fieldType name="location" class="solr.LatLonPointSpatialField"
> docValues="true"/>) as well as the deprecated solr.LatLonType fieldtype,
> but I always get the error:
>
>
> org.apache.solr.common.SolrException: The field latlong does not support spatial filtering
>
> Here's a snippet of my field definition in schema.xml in the conf folder
> of my core:
>
> <field name="id" type="string" indexed="true" stored="true"
> required="true" multiValued="false" />
>     <!-- docValues are enabled by default for long type so we don't need
> to index the version field  -->
>     <field name="_version_" type="plong" indexed="false" stored="false"/>
>     <field name="_root_" type="string" indexed="true" stored="false"
> docValues="false" />
>     <field name="_text_" type="text_general" indexed="true" stored="false"
> multiValued="true"/>
>     <field name="driverid" type="pint" indexed="true" stored="true" />
>     <field name="latlong" type="location" indexed="true" stored="true" />
>     <field name="time" type="string" indexed="false" stored="true" />
>     <field name="timestamp" type="plong" indexed="true" stored="true" />
>     <field name="latlong2" type="loc" indexed="true" stored="true" />
>     <field name="location_0_coordinate" type="double" indexed="true"
> stored="true" />
>     <field name="location_1_coordinate" type="double" indexed="true"
> stored="true" />
>
> And here are the field type definitions:
>     <fieldType name="loc" class="solr.LatLonType"
> subFieldSuffix="_coordinate"/>
>     <fieldType name="location" class="solr.LatLonPointSpatialField"
> docValues="true"/>
>
> Here's the Query I'm running:
> http://localhost:8983/solr/geo2/select?wt=json&q=:&fq={!geofilt
> sfield=latlong}&pt=-6.08165,145.8612430&d=100
>
> http://localhost:8983/solr/geo2/select/?q=*:*&fq={!
> geofilt}&sfield=latlong2&pt=-6.08165,145.8612430&d=100&wt=json
>
> And here's the Java snippet I'm using to insert data:
>         String urlString = "http://localhost:8983/solr/geo2";
>         SolrClient solr = new HttpSolrClient.Builder(urlString).build();
>         SolrInputDocument document = new SolrInputDocument();
>         document.addField("id", UUID.randomUUID().toString());
>         document.addField("driverid", "1");
>         document.addField("latlong", "-6.081689,145.391881");
>         document.addField("time", "7:01:17");
>         document.addField("timestamp", Long.valueOf("1518908477190"));
>         document.addField("latlong2", "-6.081689,145.391881");
>         document.addField("location_0_coordinate",
> Double.valueOf(-6.081689));
>         document.addField("location_1_coordinate",
> Double.valueOf(145.391881));
>         UpdateResponse response = solr.add(document);
>         solr.commit();
>         response.getQTime();
>
>
>
> I've attached my schema.xml file herewith. Can someone let me know what
> I'm doing wrong?
>
>
>
> David Howe
> Java Domain Architect
> Postal Systems
> Australia Post
>
> Level 16, 111 Bourke Street
> <https://maps.google.com/?q=Level+16,+111+Bourke+Street%0D+Melbourne%0D+VIC%0D+3000&entry=gmail&source=g>
> Melbourne
> <https://maps.google.com/?q=Level+16,+111+Bourke+Street%0D+Melbourne%0D+VIC%0D+3000&entry=gmail&source=g>
> VIC
> <https://maps.google.com/?q=Level+16,+111+Bourke+Street%0D+Melbourne%0D+VIC%0D+3000&entry=gmail&source=g>
> 3000
> <https://maps.google.com/?q=Level+16,+111+Bourke+Street%0D+Melbourne%0D+VIC%0D+3000&entry=gmail&source=g>
>
> T  0391067904
>
> M 0424036591
>
> E  David.Howe@auspost.com.au
> [image: Australia Post website] <https://auspost.com.au>
> [image: StarTrack website] <https://startrack.com.au/>
> [image: Follow us on Twitter] <https://twitter.com/auspost> [image: Like
> us on Facebook] <https://www.facebook.com/australiapost> [image: Connect
> with us on LinkedIn] <https://www.linkedin.com/company/australia-post>
>
> Australia Post is committed to providing our customers with excellent
> service. If we can assist you in any way please telephone 13 13 18 or visit
> our website.
>
> The information contained in this email communication may be proprietary,
> confidential or legally professionally privileged. It is intended
> exclusively for the individual or entity to which it is addressed. You
> should only read, disclose, re-transmit, copy, distribute, act in reliance
> on or commercialise the information if you are authorised to do so.
> Australia Post does not represent, warrant or guarantee that the integrity
> of this email communication has been maintained nor that the communication
> is free of errors, virus or interference.
>
> If you are not the addressee or intended recipient please notify us by
> replying direct to the sender and then destroy any electronic or paper copy
> of this message. Any views expressed in this email communication are taken
> to be those of the individual sender, except where the sender specifically
> attributes those views to Australia Post and is authorised to do so.
>
> Please consider the environment before printing this email.
>

RE: Getting the error - The field '*********' does not support spatial filtering

Posted by "Howe, David" <Da...@auspost.com.au>.
Hi Aakanksha,

We use the following for geo queries which works for us:

/solr/core/select?defType=edismax&indent=on&ps=0&start=0&wt=json&sow=true&hl=on&hl.fl=*&fq=%7B!geofilt%7D&pt=-6.08165,145.8612430&d=10&sfield=geoLocation&sort=geodist()%20asc&rows=10&fl=*,score,distance:geodist()

This gives us the results closest to the provided point in order of their distance from the point.

Our field definition is:

  echo "$(date) Creating geoLocation field"
  curl -X POST -H 'Content-type:application/json' --data-binary '{
    "add-field":{
       "name":"geoLocation",
       "type":"location",
       "stored":true,
       "indexed":true
    }
  }' http://localhost:8983/solr/core/schema

We are running Solr 7.1.0.

Hope this helps.

Regards,

David


From: Aakanksha Gupta [mailto:aakankshagupta2000@gmail.com]
Sent: Monday, 19 February 2018 12:27 AM
To: solr-user@lucene.apache.org
Subject: Getting the error - The field '*********' does not support spatial filtering

Hi all,
I'm a newbie to Solr. I'm trying to use it for GeoSpatial Search and I'm facing an issue while using it. I've tried using the new 'location' field type(<fieldType name="location" class="solr.LatLonPointSpatialField" docValues="true"/>) as well as the deprecated solr.LatLonType fieldtype, but I always get the error:



org.apache.solr.common.SolrException: The field latlong does not support spatial filtering
Here's a snippet of my field definition in schema.xml in the conf folder of my core:

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <!-- docValues are enabled by default for long type so we don't need to index the version field  -->
    <field name="_version_" type="plong" indexed="false" stored="false"/>
    <field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
    <field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>
    <field name="driverid" type="pint" indexed="true" stored="true" />
    <field name="latlong" type="location" indexed="true" stored="true" />
    <field name="time" type="string" indexed="false" stored="true" />
    <field name="timestamp" type="plong" indexed="true" stored="true" />
    <field name="latlong2" type="loc" indexed="true" stored="true" />
    <field name="location_0_coordinate" type="double" indexed="true" stored="true" />
    <field name="location_1_coordinate" type="double" indexed="true" stored="true" />

And here are the field type definitions:
    <fieldType name="loc" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
    <fieldType name="location" class="solr.LatLonPointSpatialField" docValues="true"/>
Here's the Query I'm running:
http://localhost:8983/solr/geo2/select?wt=json&q=:&fq={!geofilt<http://localhost:8983/solr/geo2/select?wt=json&q=:&fq=%7b!geofilt> sfield=latlong}&pt=-6.08165,145.8612430&d=100

http://localhost:8983/solr/geo2/select/?q=*:*&fq={!geofilt}&sfield=latlong2&pt=-6.08165,145.8612430&d=100&wt=json<http://localhost:8983/solr/geo2/select/?q=*:*&fq=%7b!geofilt%7d&sfield=latlong2&pt=-6.08165,145.8612430&d=100&wt=json>
And here's the Java snippet I'm using to insert data:
        String urlString = "http://localhost:8983/solr/geo2";
        SolrClient solr = new HttpSolrClient.Builder(urlString).build();
        SolrInputDocument document = new SolrInputDocument();
        document.addField("id", UUID.randomUUID().toString());
        document.addField("driverid", "1");
        document.addField("latlong", "-6.081689,145.391881");
        document.addField("time", "7:01:17");
        document.addField("timestamp", Long.valueOf("1518908477190"));
        document.addField("latlong2", "-6.081689,145.391881");
        document.addField("location_0_coordinate", Double.valueOf(-6.081689));
        document.addField("location_1_coordinate", Double.valueOf(145.391881));
        UpdateResponse response = solr.add(document);
        solr.commit();
        response.getQTime();

I've attached my schema.xml file herewith. Can someone let me know what I'm doing wrong?



David Howe
Java Domain Architect
Postal Systems
Australia Post

Level 16, 111 Bourke Street Melbourne VIC 3000

T  0391067904

M 0424036591

E  David.Howe@auspost.com.au
[Australia Post website]<https://auspost.com.au>
[StarTrack website]<https://startrack.com.au/>
[Follow us on Twitter]<https://twitter.com/auspost> [Like us on Facebook] <https://www.facebook.com/australiapost>  [Connect with us on LinkedIn] <https://www.linkedin.com/company/australia-post>


Australia Post is committed to providing our customers with excellent service. If we can assist you in any way please telephone 13 13 18 or visit our website.

The information contained in this email communication may be proprietary, confidential or legally professionally privileged. It is intended exclusively for the individual or entity to which it is addressed. You should only read, disclose, re-transmit, copy, distribute, act in reliance on or commercialise the information if you are authorised to do so. Australia Post does not represent, warrant or guarantee that the integrity of this email communication has been maintained nor that the communication is free of errors, virus or interference.

If you are not the addressee or intended recipient please notify us by replying direct to the sender and then destroy any electronic or paper copy of this message. Any views expressed in this email communication are taken to be those of the individual sender, except where the sender specifically attributes those views to Australia Post and is authorised to do so.

Please consider the environment before printing this email.