我正在PHP中构建一个与Apache SOLR对话并获取数据缓存查询的小类。这是一个独立的脚本,将在Drupal之外调用。该数据是与Drupal 6中定义的content_type相关联的查询。
我最初通过在下面的代码中定义内容来做到这一点。但是,现在我需要通过Drupal ApacheSOLR模块索引所有内容。
我想知道如何使用Drupal SOLR模块为某个查询 WITHOUT 查询SOLR。
当我在Drupal之外完成这项工作时,我会在solr的/ conf目录中的data-config中创建一个条目,如下所示:
<document name="content">
<entity name="id"
query="SELECT e.nid, e.field_a, e.field_b, e.field_c, n.type AS content_type
FROM
content_type_myContentType e
LEFT JOIN
node n ON n.nid = e.nid
WHERE
n.status='1'">
<field column="nid" name="id" />
<field column="title" name="title" />
<field column="field_1" name="field_1" />
<field column="field_2" name="field_2" />
<field column="content_type" name="content_type" />
</entity>
</document>
并在schema.xml中设置字段,如下所示:
<uniqueKey>id</uniqueKey>
<field column="nid" name="id" type="int" indexed="true" stored="true" required="true"/>
<field column="field_a" name="field_a" type="text" indexed="true" stored="true"/>
<field column="field_b" name="field_b" type="text" indexed="true" stored="true"/>
<field column="field_c" name="field_c" type="float" indexed="true" stored="true"/>
<field column="content_type" name="content_type" type="text" indexed="true" stored="true"/>
<defaultSearchField>fulltext</defaultSearchField>
但是,现在我们希望Drupal处理它,所以我已经配置SOLR与Drupal的apachesolr模块对话。我似乎在“启用过滤器”选项卡中选择了我想要编入索引的字段。
现在,假设我不在drupal之外,并且想要查询solr以获取某种内容类型的所有结果,我该怎么做?以前我会调用$ myConnection-&gt; search($ query),它仍然连接正常,但返回空结果。
我的旧查询类似于:
$query = 'content_type: my_content_type_name';
其中不再有效,因为我不知道Drupal / SOLR将我的索引字段定义为。另外,我如何定义查询?我还可以通过data-config.xml执行此操作,但允许Drupal负责索引吗?