Search Drupal后面的Solr为特定查询返回太多结果

Search Drupal后面的Solr为特定查询返回太多结果,search,drupal,solr,Search,Drupal,Solr,我们让Solr坐在客户的Drupal7网站后面,虽然它工作正常,但它返回的结果太多,而这些结果应该是非常具体的查询。(它也存在相关性/权重问题;但我希望解决这个问题将消除那些毫不相关的结果。) 例如,搜索短语“伦敦的特定短语”应返回其标题为“相当高”的节点;我甚至不认为应该返回任何其他内容。但我发现它返回了很多内容,纯粹是因为它提到了“伦敦” 无聊的是,搜索荒谬的短语“伦敦的馅饼皮”也会得到很多结果,很明显,这只是因为他们提到了伦敦。网站上没有提到实际的馅饼皮 当我搜索“伦敦的特定短语”时,以下

我们让Solr坐在客户的Drupal7网站后面,虽然它工作正常,但它返回的结果太多,而这些结果应该是非常具体的查询。(它也存在相关性/权重问题;但我希望解决这个问题将消除那些毫不相关的结果。)

例如,搜索短语“伦敦的特定短语”应返回其标题为“相当高”的节点;我甚至不认为应该返回任何其他内容。但我发现它返回了很多内容,纯粹是因为它提到了“伦敦”

无聊的是,搜索荒谬的短语“伦敦的馅饼皮”也会得到很多结果,很明显,这只是因为他们提到了伦敦。网站上没有提到实际的馅饼皮

当我搜索“伦敦的特定短语”时,以下是服务器上catalina.out日志中的参数(为清晰起见添加了空格):

注意,这些参数是由Drupal的ApacheSolr模块构建的;我不相信我们自己有任何特定的自定义代码对它有任何影响

如果直接在浏览器中输入,则对应于以下URL:

^2.0&qf=path\u alias^5.0&qf=content^40&qf=label^21.0&qf=tos\u content\u extra^1.0&qf=ts\u comments^20&qf=tm\u vid\u 3\u names^200&facet.date=ds\u created.facet.date.start=1970-01-01T00:00:00Z/年&f.bundle.facet.id.mincount=1&hl.fl=content,ts\u json comments&wt.nl=map&json=rows=10&fl,bundle=u,实体类型,bundle,实体名称,bundle=u,创建数据集,更改数据集,分数,路径,url,is_uid,tos_name,tm_node,zs_entity&start=0&facet.sort=count&f.bundle.facet.limit=50&q=special+phrase+in+London&f.ds_created.facet.date.end=2012-01-01T00:00:00Z%2b1年&bf=recip(ms(现在,创建数据集),3.16e-11,1,1)^150.0&facet.field=im\u field\u health\u topic&facet.field=bundle&f.im\u field\u health\u topic.facet.limit=50&f.ds\u created.facet.limit=50

此URL返回近2000个结果-这是网站上的大部分内容!我曾经尝试过一次删除每个查询参数,唯一有区别的似乎是qf和q:如果删除qf,结果为零;如果我删除q,我会得到更多的结果

我想这里有两个问题:

  • 这些参数中是否有任何东西告诉Solr“如果出现‘特定短语’或‘piecast’,不要担心:只需整理‘伦敦’的结果”,然后按相关性排序?我想补充一点,我认为stopwords文件中提到了“in”,所以我们可能可以忽略它的影响(?)
  • 或者这是(标准Drupal)模式中需要更改的内容
    我理解有时候搜索对访问者来说是更好的,如果它是包容性的;即使没有找到完美的匹配,谷歌也会返回结果。但是,除了停止单词和词干之外,客户端确实要求搜索只返回所有单词出现在内容中的结果。

    如何显示搜索? 也许你可以通过solr视图来限制搜索范围? 谢谢


    尼克

    您如何显示搜索结果? 也许你可以通过solr视图来限制搜索范围? 谢谢


    Nick

    正如在上一篇文章中提到的,ApacheSolr搜索集成模块使用param,它或多或少地配置为通过关键字在数据集中的紧密程度来影响排名。通过查看文档,您还可以通过其他方式使用参数来影响排名。因此,ApacheSolr搜索集成生成的结果与AND操作符的权重更为接近,即使在添加更多关键字时,它将返回更多结果。此参数的好处是,如果用户输入的关键字限制过多,结果仍将返回。显示无结果是一种非常快速的方法,可以引导人们远离您的站点。

    正如在上一篇文章中所提到的,Apache Solr搜索集成模块利用param,它或多或少地配置为通过关键字在数据集中的紧密程度来影响排名。通过查看文档,您还可以通过其他方式使用参数来影响排名。因此,ApacheSolr搜索集成生成的结果与AND操作符的权重更为接近,即使在添加更多关键字时,它将返回更多结果。此参数的好处是,如果用户输入的关键字限制过多,结果仍将返回。显示无结果是引导人们远离站点的一种非常快速的方法。

    您需要确保schema.xml中的默认运算符为“AND”,如果需要更改,请重新编制索引。(我认为默认情况下是“或”)schema.xml中有“”-这是相关的设置吗?它在那里已经有好几年了;但是无论如何,我们昨天重新编制了索引,所以如果这是设置,那么它肯定在那里。好的-我刚刚注意到你有一个
    qf
    参数。由于您没有使用Demax查询解析器,我认为Solr不会在意
    qf
    参数。尝试将
    defType=demax
    添加到查询中:如果您使用的是Solr 3.1或更高版本,您甚至可以使用扩展的Demax:希望这有帮助。我认为Demax解析器是在solrconfig.xml的定义中定义的;将其添加到URL不会改变结果,但请参阅下面的注释,以了解似乎有帮助的内容(mm接近100%,op=和-不幸的是-关闭schema.xml中的SnowballPorter词干分析器)。您需要确保schema.xml中的默认运算符为“AND”,如果需要更改,请重新编制索引。(我认为默认情况下是“或”)schema.xml中有“”-这是相关的设置吗?它在那里已经有好几年了;但是无论如何,我们昨天重新编制了索引,所以如果这是设置,那么它肯定在那里。好的-我刚刚注意到你有一个
    qf
    参数。因为您没有使用DISMAX查询PAR
    {spellcheck=false&facet=true&f.im_field_health_topic.facet.mincount=1
     &facet.mincount=1&f.ds_created.facet.date.gap=%2B1YEAR
     &spellcheck.q=particular+phrase+in+london
     &qf=taxonomy_names^2.0&qf=path_alias^5.0&qf=content^40&qf=label^21.0
     &qf=tos_content_extra^1.0&qf=ts_comments^20&qf=tm_vid_3_names^200
     &facet.date=ds_created
     &f.ds_created.facet.date.start=1970-01-01T00:00:00Z/YEAR
     &f.bundle.facet.mincount=1&hl.fl=content,ts_comments
     &json.nl=map&wt=json&rows=10&fl=id,entity_id,entity_type,bundle,bundle_name,
       label,is_comment_count,ds_created,ds_changed,score,path,url,is_uid,
       tos_name,tm_node,zs_entity
     &start=0&facet.sort=count&f.bundle.facet.limit=50&q=special+phrase+in+london
     &f.ds_created.facet.date.end=2012-01-01T00:00:00Z%2B1YEAR/YEAR
     &bf=recip(ms(NOW,ds_created),3.16e-11,1,1)^150.0
     &facet.field=im_field_health_topic&facet.field=bundle
     &f.im_field_health_topic.facet.limit=50&f.ds_created.facet.limit=50}
    hits=1998 status=0 QTime=14