Как настроить schema.xml для гео-пространственного поиска в solr 7.6? - PullRequest
1 голос
/ 26 апреля 2019

Я использую Solr 7.6 для поиска и фильтрации.Я хочу отфильтровать данные о расположении поблизости, используя Solr Spatial Search, но не могу найти никаких данных.

Я внес следующие изменения в schema.xml:

<fieldType name="location" class="solr.LatLonPointSpatialField" docValues="true" />
<field name="latlong" type="location" indexed="true" stored="true"/>

Я пробовал этозапрос:

d=5&fq={!geofilt sfield=latlong}&pt=22.303894, 70.802162&q=*:*

мой ответ:

{
  "responseHeader":{
    "status":0,
    "QTime":0,
    "params":{
      "q":"*:*",
      "d":"5",
      "pt":"22.303894, 70.802162",
      "fq":"{!geofilt sfield=latlong}",
      "_":"1556533385742"}},
  "response":{"numFound":0,"start":0,"docs":[]
  }}

Ожидаемый документ:

{
        "zipCode":"360001",
        "currencySign":"₹",
        "suspendedByAdmin":false,
        "likeCount":62,
        "id":1372,
        "longitude":70.8023621,
        "countryname":"India",
        "statename":"Gujarat",
        "suspended":false,
        "city":"Rajkot",
        "latitude":22.2913494,
        "description":"Description is here"
        "_version_":1632151597023756288},

1 Ответ

0 голосов
/ 06 мая 2019

Наконец-то получили решение.Сначала поместите значение latlong как текст (lat, long), а затем присвойте это значение latlong как местоположение, это используется в качестве поля для геопространственного запроса

<fieldType name="location" class="solr.LatLonPointSpatialField" docValues="true" />
<field name="latlong" type="text_general" indexed="true" stored="false" multiValued="false"/> 
<field name="location" type="location" indexed="true" stored="true" multiValued="false"/>

, используя copyField, он хранит значение latlong

<copyField source="latlong"  dest="location"/>

Запрос:

  d=5&fq={!geofilt sfield=location}&pt=22.303894,70.802162&q=*:*

Ответ:

 {
      "responseHeader":{
        "status":0,
        "QTime":1,
        "params":{
          "q":"*:*",
          "d":"5",
          "pt":"22.303894,70.802162",
          "fq":"{!geofilt sfield=store}",
          "_":"1557114448320"}},
      "response":{"numFound":15,"start":0,"docs":[
          {
            "zipCode":"360003",
            "currencySign":"₹",
            "suspendedByAdmin":false,
            "likeCount":45,
            "id":509,
            "longitude":70.8147741,
            "latlong":"22.3024966,70.8147741",
            "_version_":1632752689826758656,
            "store":"22.3024966,70.8147741},
         {...
...