SOLR: Как мне запросить SOLR * внешне * в PHP после того, как Drupal его проиндексировал? - PullRequest
1 голос
/ 21 ноября 2011

Я строю небольшой класс в PHP, который общается с Apache SOLR и получает кешированный запрос данных.Это автономный скрипт, который будет вызываться вне Drupal.Данные - это запрос, связанный с типом content_type, определенным в Drupal 6.

Я сделал это изначально, определив вещи в коде ниже.Однако теперь я должен проиндексировать все через модуль Drupal ApacheSOLR.

Я хотел бы знать, как запросить SOLR для определенного запроса БЕЗ с использованием модуля Drupal SOLR.

Когда я делал это полностью вне Drupal, я создавал запись в data-config, найденную в каталоге solr / conf, следующим образом:

<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 для взаимодействия с модулем apachesolr Drupal.Кажется, я выбираю поля, которые я хотел бы проиндексировать, на вкладке «Включить фильтры».

Теперь, если я нахожусь за пределами drupal и хочу запросить solr для всех результатов определенного типа контента, как мне это сделать?Ранее я бы назвал $ myConnection-> search ($ query), который по-прежнему подключается нормально, но возвращает пустые результаты.

Мой старый запрос будет выглядеть примерно так:

$query = 'content_type: my_content_type_name';

Это больше не работает, так как я не знаю, как Drupal / SOLR определяет мое индексированное поле как.Кроме того, как мне определить запрос?Могу ли я сделать это через data-config.xml, но разрешить Drupal отвечать за индексацию?

...