Есть индекс, который формируется через xmlpipe. В его документах есть полнотекстовое поле, которое должно собирать несколько значений. Каждое значение — это одно слово.
В настоящее время источник данных выглядит так:
<sphinx:docset>
<sphinx:schema>
<sphinx:field name="words"/>
</sphinx:schema>
<sphinx:document id="1">
<words>слово1 слово2 слово3</words>
</sphinx:document>
...
</sphinx:docset>
То есть слова объединяются в одну строку через разделитель, например пробел.
Проблема этого решения заключается в том, что объединение значений таким способом плохо сказывается на релевантности поиска. Представим, что поле выглядит так:
слово1 слово2 слово3
. Если мы ищем
слово1
, то Sphinx будет считать, что запрос не точно соответствует значению поля. Соответственно, позиция такого документа по релевантности будет ниже, чем у документа с полем из одного слова:
слово1
.
Существует ли более удачный способ реализации поля с несколькими значениями? Должно получиться что-то вроде такого:
<sphinx:docset>
<sphinx:schema>
<sphinx:field name="words"/>
</sphinx:schema>
<sphinx:document id="1">
<words>слово1</words>
<words>слово2</words>
<words>слово3</words>
</sphinx:document>
...
</sphinx:docset>