Поиск в solr с многозначным полем местоположения - PullRequest
4 голосов
/ 09 декабря 2011

Я могу индексировать несколько значений для поля типа местоположения в solr.Ответ для измененного schema.xml и индексирования измененных образцов выглядит как запрос:

  http://192.168.3.19:8983/solr/select?wt=json&indent=true&q=*:*

Ответ:

{
    "id":"TWINX2048-3200PRO",
    "name":"CORSAIR  XMS 2GB (2 x 1GB) 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) Dual Channel Kit System Memory - Retail",
    "manu":"Corsair Microsystems Inc.",
    "price":185.0,
    "popularity":5,
    "inStock":true,
    "manufacturedate_dt":"2006-02-13T15:26:37Z",
    "payloads":"electronics|6.0 memory|3.0",
    "cat":["electronics","memory"],
    "store":["37.7752,-122.4232","37.7752,-122.4232","38.7752,-122.4232","39.7752,-122.4232"],
    "features":[
      "CAS latency 2,\t2-3-3-6 timing, 2.75v, unbuffered, heat-spreader"]},
  {
    "id":"VS1GB400C3",
    "name":"CORSAIR ValueSelect 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - Retail",
    "manu":"Corsair Microsystems Inc.",
    "price":74.99,
    "popularity":7,
    "inStock":true,
    "manufacturedate_dt":"2006-02-13T15:26:37Z",
    "payloads":"electronics|4.0 memory|2.0",
    "cat":["electronics","memory"],
    "store":["37.7752,-100.0232","37.7752,-122.4232","38.7752,-122.4232","39.7752,-122.4232"]},
  {
    "id":"VDBDB1A16",
    "name":"A-DATA V-Series 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - OEM",
    "manu":"A-DATA Technology Inc.",
    "popularity":0,
    "inStock":true,
    "manufacturedate_dt":"2006-02-13T15:26:37Z",
    "payloads":"electronics|0.9 memory|0.1",
    "cat":["electronics","memory"],
    "store":["45.17614,-93.87341","37.7752,-122.4232","38.7752,-122.4232","39.7752,-122.4232"],
    "features":[
      "CAS latency 3,\t 2.7v"]},
  {

witch означает, что данные сохранены правильно.Если я запрашиваю первую сохраненную геолокацию, она работает нормально, но если я ищу третью или четвертую геолокацию, solr не возвращает результата.Если я выполню следующий запрос:

http://localhost:8983/solr/select?wt=json&indent=true&q=*:*&fq={!geofilt%20pt=45.17614,-93.87341%20sfield=store%20d=5}

, я получу правильный ответ:

{
        "id":"VDBDB1A16",
        "name":"A-DATA V-Series 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - OEM",
        "manu":"A-DATA Technology Inc.",
        "popularity":0,
        "inStock":true,
        "manufacturedate_dt":"2006-02-13T15:26:37Z",
        "payloads":"electronics|0.9 memory|0.1",
        "cat":["electronics","memory"],
        "store":["45.17614,-93.87341","37.7752,-122.4232","38.7752,-122.4232","39.7752,-122.4232"],
        "features":[
          "CAS latency 3,\t 2.7v"]},
      {

But if the query is:

    http://localhost:8983/solr/select?wt=json&indent=true&q=*:*&fq={!geofilt%20pt=38.7752,-122.4232%20sfield=store%20d=50}

Я не получу никаких результатов.Это вопрос Solr?Любое решение?

Ответы [ 3 ]

5 голосов
/ 11 июля 2014

Старый вопрос, но он все еще во многих результатах поиска Google, так что здесь больше информации для многозначных координатных полей:

Вы можете добавить следующее в свой schema.xml:

<fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
           spatialContextFactory="com.spatial4j.core.context.jts.JtsSpatialContextFactory"
           distErrPct="0.025"
           maxDistErr="0.000009"
           units="degrees" />

Затем используйте поле location_rpt для многозначного координатного поля и воспользуйтесь всеми преимуществами нового пространственного поиска Solr 4 предложений.

Вам также необходимо добавить JTS jar на ваш путь к классу solr, если вы используете пользовательский пространственныйContextFactory.Если вы удалите этот параметр из определения fieldType, многозначные поля по-прежнему будут работать, но другие расширенные функции не будут.

1 голос
/ 22 января 2014

Согласно заявке (SOLR-2154), на которую ссылается vuky в ответе d Whelan, это должно быть во всех новых выпусках Solr.Это было исправлено в билете SOLR-3304 (https://issues.apache.org/jira/browse/SOLR-3304),, который был помечен как исправленный 17 сентября 2012 года.

Я не могу найти конкретный выпуск, из которого он должен работать, но я полагаювсе, что будет выпущено после мая 2013 года, должно сработать, если я прочитаю комментарии в билетах.

0 голосов
/ 20 декабря 2011

Типы LatLon не могут быть многозначными.

http://wiki.apache.org/solr/SpatialSearch#LatLonType

...