Solr geospatial和CakePHP:使用geodist()进行提升

时间:2011-07-11 22:48:09

标签: php cakephp solr geospatial

我有一个连接到Solr 3.3搜索的CakePHP 1.3应用程序。

除了lat / lon之外,有两个文档具有相同的属性。更接近lat / lon的doc被输入第二个(更高的id),但是geodist()的bost我希望它首先出现。实际行为是doc,更接近lat / lon出现在第二位。这是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)

第二个doc(id = 28)的lat / lon与查询中的“pt”值匹配。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我添加了defType=dismax,现在结果按预期排序。