• Sphinx, как искать по одному общему полю фио?

    @Pro_snap Автор вопроса
    Проблема что в фио может быть только одно из составляющих

    Решение:

    Настройки на nodejs:
    sphinx.SetMatchMode(SphinxClient.SPH_MATCH_EXTENDED2);
    sphinx.SetRankingMode(SphinxClient.SPH_RANK_WORDCOUNT);
    sphinx.SetSortMode(SphinxClient.SPH_SORT_EXTENDED, "@weight DESC");


    Конфиг sphinx:
    source source_test
    {
     type   = pgsql
    
     sql_query  = SELECT id, fio FROM testTable
     sql_attr_string = fio
    }
    
    index index_test
    {
     source   = test
     min_infix_len  = 3
     index_exact_words = 1
     infix_fields  = fio
     charset_type  = utf-8
    }


    и выполняем запрос:

    //формируем строку вида "^иванов*" | "*иванов*" и делаем запрос
    var name = "\"^" + req.params.name + "*\" | \"*" + req.params.name + "*\"";
    sphinx.Query(name, function (err, result) {
       ...
    });
    Ответ написан
    Комментировать