Как использовать несколько источников в одном индексе в Sphinx? - PullRequest
4 голосов
/ 08 января 2010

Файл конфигурации Sphinx намекает на то, что он поддерживает несколько источников для одного индекса, как мне на самом деле его указать?

Вот фрагмент из файла конфигурации:

# document source(s) to index
# multi-value, mandatory
# document IDs must be globally unique across all sources
source                  = src1

Я пытался установить его в следующих форматах:

source = src1, src2
source = [src1, src2]

и я также дважды пытался использовать исходную переменную, например:

source = src1
source = src2

Я подозреваю, что я просто тупица, так как не уверен в синтаксисе, используемом в файле конфигурации. Есть идеи?

Используя второй фрагмент кода, я получаю следующую ошибку:

ERROR: index 'iwa': fulltext fields count mismatch (me=iwa_publications, in=iwa_events, myfields=3, infields=8).

Двумя источниками являются iwa_events и iwa_publications. Оба имеют уникальные столбцы идентификаторов, и оба источника работают при индивидуальной индексации.

Ответы [ 3 ]

1 голос
/ 08 января 2010

Обнаружена проблема: я неправильно понял смысл наличия нескольких источников. Может показаться, что несколько источников действительно могут быть использованы в одном индексе, но только если они идентичны с точки зрения схемы, как в соответствии с этой строкой в ​​документах:

«Исходные схемы должны быть одинаковыми, чтобы их можно было хранить в одном индексе.»

Большое спасибо за помощь, Ян. Мне было плохо за недоразумение. : D

1 голос
/ 27 декабря 2011

да.исходные схемы должны быть одинаковыми;но вам нужно только то же количество полей.Вы даже можете использовать одно и то же поле дважды, если это необходимо.просто задайте поля с одинаковым именем во всех запросах: sql_query = select id, catname as one, country as two, currency as three, language as four from catalog

1 голос
/ 08 января 2010

Если вы хотите выполнять поиск по нескольким индексам одновременно, вы должны указать их в своем коде PHP, а не в файле конфигурации. Просто разделите индексы в вашем методе Query (см. документацию ):

$cl->Query ( "test query", "index1 index2" );

Согласно документации вы можете. Ваш второй фрагмент кода является правильным форматом для перечисления нескольких источников. Пожалуйста, отредактируйте свой вопрос, чтобы сообщить нам, в чем ваша проблема.

...