@smigles

Как реализовать поле с несколькими значениями в Sphinx?

Есть индекс, который формируется через 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>
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы