代码之家  ›  专栏  ›  技术社区  ›  hxtree

Solr 7强制q值

  •  1
  • hxtree  · 技术社区  · 6 年前

    我正在使用 Drupal ApacheSolr Multisite Module 这是因为它的依赖性 Apache Solr Search 配置当前仅支持Solr 5。x、 我正在使用Solr 7并更新了大部分配置。除了on/select之外,我什么都做得很好。我认为这是因为模块提供的查询(如下所示)具有一个“q”值,这显然会导致它失败。solrconfig中有方法吗。xml是否为所有选择将q设置为等于“****”?为了便于部署,我希望尽可能避免对Drupal模块本身进行代码更改。

    太阳能休息请求示例

    http://localhost:8983/solr/drupal_multisite/select?start=0&rows=10&fq=%28hash%3A6qegyq%20OR%20access__all%3A0%29&fq=%28hash%3A6qegyq%29&spellcheck=true&q=test&fl=id%2Centity_id%2Centity_type%2Cbundle%2Cbundle_name%2Clabel%2Css_language%2Cis_comment_count%2Cds_created%2Cds_changed%2Cscore%2Cpath%2Curl%2Cis_uid%2Ctos_name%2Chash%2Csite&mm=1&pf=content%5E2.0&ps=15&hl=true&hl.fl=content&hl.snippets=3&hl.mergeContigious=true&f.content.hl.alternateField=teaser&f.content.hl.maxAlternateFieldLength=256&spellcheck.q=test&qf=content%5E40&qf=label%5E5.0&qf=tags_h1%5E5.0&qf=tags_h2_h3%5E3.0&qf=tags_h4_h5_h6%5E2.0&qf=tags_inline%5E1.0&qf=tos_content_extra%5E0.1&qf=tos_name%5E3.0&qf=ts_comments%5E20&wt=json&json.nl=map
    

    solarconfig。xml示例

    <requestHandler name="/select" class="solr.SearchHandler">
     <lst name="defaults">
      <str name="df">text</str>
      <str name="q">*:*</str>
      <str name="q.alt">*:*</str>
     </lst>
    </requestHandler>
    

    谢谢你的建议!

    2 回复  |  直到 6 年前
        1
  •  1
  •   EricLavault    6 年前

    可以从您自己的drupal模块更改查询,Apache Solr搜索模块为此公开了一个钩子( hook_apachesolr_query_alter ) :

    /**
     * Implementation of hook_apachesolr_query_alter().
     * 
     * @param DrupalSolrQueryInterface $query
     * @see apachesolr.interface.inc
     */
    function yourmodule_apachesolr_query_alter(DrupalSolrQueryInterface $query) {
      $query->replaceParam('q', '*:*');
    }
    

    尽管如此,如果你 “除“打开/选择”外,所有功能都正常运行” ,您的问题可能与您的请求调度程序 handleSelect 参数,该选项影响请求的行为,例如 /select?qt=XXX (阅读 this 如果你不知道我的意思)。

        2
  •  1
  •   user862268    6 年前

    如果您可以编写一些代码(不在drupal模块中,而是一个独立的类/jar),那么您可以编写一个solr插件( https://wiki.apache.org/solr/SolrPlugins )并为“/选择”编写自定义处理程序( https://medium.com/@wkaichan/custom-request-handler-in-apache-solr-4f76521b031a )在该处理程序中,将“q”参数重写为“ . “并调用原始处理程序。