SOLR:在Drupal索引之后,如何在PHP中外部查询SOLR *?

时间:2011-11-21 19:35:06

标签: mysql drupal drupal-6 solr

我正在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负责索引吗?

0 个答案:

没有答案