【问题标题】:Solr return all results when q=<empty>Solr 在 q=<empty> 时返回所有结果
【发布时间】:2014-02-11 21:35:51
【问题描述】:

我正在使用 PHP Codeigniter 框架solr-php-client 来构建搜索应用程序。

我有两页 -

  1. 只有一个输入框的搜索页面
  2. 当用户在搜索页面中输入搜索词时将显示结果的结果页面

问题是,除非我输入搜索词 solr-php-client 不会返回任何结果,并且其 url 将只是 "http://localhost:8080/search/?q=" 并且它不会做任何事情。但是,当我输入诸如“apple”之类的搜索词时,它会重定向到匹配结果的结果页面而没有任何问题,并且 url 变为 "http://localhost:8080/rdsearch/?q=apple"

我想要实现的是 - 当用户没有在搜索页面中输入搜索词或当 q 为空时(如"http://localhost:8080/search/?q="),它应该直接指向结果页面并显示所有结果(类似于 solr 查询 *:*

【问题讨论】:

    标签: php codeigniter search solr codeigniter-url


    【解决方案1】:

    可能还有其他一些可用的解决方案,我可以向您推荐以下 2 个解决方案。

    1. 您可以检查您的输入框。如果它是空的,默认情况下通过 *:* 作为 Solr URL 的输入。
    2. 或者您可以为 select 请求处理程序修改您的 solrconfig.xml。放

    &lt;str name="q.alt"&gt;*:*&lt;/str&gt;

    查询时

    http://'localhost':8080/solr/collection1/select?q=&wt=xml&indent=true&defType=dismax

    您可以看到虽然我提供了 q= ,但它会返回所有结果。因为它会采用 q.alt 查询,因为查询解析器现在是 Dismax。欲了解更多信息,请read here

    【讨论】:

    • 谢谢!我检查了我的 solrconfig.xml,我看到 q.alt 已经设置为 ':' 我不确定为什么它在我的 solr-php-client (code.google.com/p/solr-php-client) 中被忽略使用。
    • 除此之外,我还必须在 codeigniter 中编辑我的控制器文件以包含如果 $q 为空,它必须返回所有内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    相关资源
    最近更新 更多