Solr геопространственный и CakePHP: повысить с помощью геодиста () - PullRequest
0 голосов
/ 12 июля 2011

У меня есть приложение CakePHP 1.3, подключающееся к поиску Solr 3.3.

Есть два документа с одинаковыми атрибутами, за исключением их широты и долготы. Документ с более близким широтой / долготой был введен вторым (более высокий идентификатор), но с бостом от geodist () я ожидаю, что он появится первым. Фактическое поведение - док с более близким широтой / долготой, появляется вторым. Вот массив, который служба PHP Solr возвращает обратно моему приложению:

protected '_rawResponse' => string '{
    "responseHeader":{
        "status":0,
        "QTime":0,
        "params":{
            "start":"0",
            "q":"beethoven eroica",
            "sfield":"lat_lon",
            "pt":"45.3306,-122.5290",
            "bf":"recip(geodist(),1,1000,1000)",
            "json.nl":"map",
            "wt":"json",
            "rows":"10",
            "version":"1.4"
        }
    },
    "response":{
        "numFound":7,
        "start":0,
        "docs":[{
            "id":"2",
            "title":"Symphony No 3, Eroica",
            "composer":"Beethoven, Ludwig van",
            "publisher":"Schott Musik International",
            "location":"Seattle, WA",
            "lat_lon":"47.6115,-122.3343"
        },{
            "id":"28",
            "title":"Symphony No 3, Eroica",
            "composer":"Beethoven, Ludwig'... (length=1418)

У этого второго документа (с id = 28) широта / долгота, которые соответствуют значению "pt" в запросе.

Что я делаю не так?

1 Ответ

0 голосов
/ 12 июля 2011

Я добавил defType=dismax, и теперь результаты отсортированы, как и ожидалось.

...