[solr ] Solr 多字段匹配,需求不同字段优先顺序不同

mryk2012 2016-05-16
    比如最简单的博客模型,只有文章标题title,和文章内容content加入solr

以“test”作为搜索词,已知title包含'test'的有10个,content包含‘test’的有50个

需要搜索结果,title包含的10个排在前面,content包含的50个排在后面,而他们

分别再按间时排序进行排序,这个不知道如何解决。

    也看了edismax,  设置qf 和 bf 权重, qf=title^5  content^1
bf=div(time,100000000)//根据时间降序排

    但是还不能满足上面的需求,有知道如何解决这个问题的朋友吗,求给点提示
冰糖葫芦 2016-05-28
根据你的问题,可以用这个bf,
String term = “test”;
String bf =
  "sum(" +
                    “product(“ +
                        "if(exists(query({!v=’title:” + term + "'})),100000,0)," +
                        "div(time,100000000)" +
                        ")," +
                    “product(“ +
                        "if(exists(query({!v=‘content:” + term + “’})),1,0),” +
                        "div(time,100000000)" +
                        ")" +

                “)”;
思路就是让title中包含关键词的doc分数设置很大(然后这样就可以把title包含的排前),而product函数则保障tile按时间倒序、content按时间倒序。
有问题可以联系我
Global site tag (gtag.js) - Google Analytics