我正在使用containsAll
因为它的依赖Drupal ApacheSolr Multisite Module配置目前仅支持Solr 5.x.我使用Solr 7并更新了大部分配置。除了/ select之外,我已经完成了所有工作。我相信这是因为模块提供的查询(示例如下所示)具有" q"显然导致它失败的价值。 solrconfig.xml中是否有一种方法可以将q设置为等于" *。 *"对于所有选择?如果出于部署目的,我想避免对Drupal模块本身进行代码更改。
太阳能REST请求示例
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>
感谢您的任何建议!
答案 0 :(得分:1)
如果您可以编写一些代码(drupal模块中没有,但是独立的类/ jar),那么您可以编写一个solr插件(https://wiki.apache.org/solr/SolrPlugins)并为&#34; / select&#编写自定义处理程序34; (https://medium.com/@wkaichan/custom-request-handler-in-apache-solr-4f76521b031a)并在该处理程序中覆盖&#34; q&#34;参数到&#34; 。&#34;并调用原始处理程序。
答案 1 :(得分:1)
可以从您自己的drupal模块更改查询,Apache Solr Search模块为此公开了一个钩子(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', '*:*');
}
话虽如此,如果你“除了/ select”之外一切正常,你的问题可能与你的请求调度程序的handleSelect
参数有关,这是一个影响请求行为的选项例如/select?qt=XXX
(如果您不知道我的意思,请阅读this)。