Exemple #1
0
    index: function (req, res, next) {
        /*
         * 初始化参数
         */
        var model = {
            filter: {
                gweight: req.query.gweight || '',
                sweight: Number(req.query.sweight) || '',
                eweight: Number(req.query.eweight) || '',
                carlen: req.query.carlen || '',
                ctype: '',
                infotype: '',
                scity: '',
                ecity: ''
            },
            page: {
                page_index: Number(req.query.page) || 0,
                page_size: 15
            },
            index: 'logistics_vehicle_list,logistics_yclogisinfo_carlist,logistics_zjlogisinfo_carlist,logistics_tjlogisinfo_carlist',
            sort: {filed: 'source', sorttype: 'ASC'},
            total_find: 0,
            total: 0,
            time: 0,
            items: []
        };

        if (req.query.scity && req.query.scity != '全国') {
            model.filter.scity = req.query.scity;
        }
        else {
            model.filter.scity = '全国';
        }
        if (req.query.ecity && req.query.ecity != '全国') {
            model.filter.ecity = req.query.ecity;
        }
        else {
            model.filter.ecity = '全国';
        }
        if (req.query.ctype) {
            model.filter.ctype = req.query.ctype;
        }
        if (req.query.infotype) {
            model.filter.infotype = Number(req.query.infotype);
        }

        /*
         *初始化sphinx
         */
        var cl = new SphinxClient();
        cl.SetServer(settings.sphinx.host, settings.sphinx.port);
        cl.SetLimits(model.page.page_index * 15, model.page.page_size, 100000);

        cl.SetMaxQueryTime(20);
        cl.SetMatchMode(6);
        cl.SetRankingMode(7);
        cl.SetSortMode(4, model.sort.filed + ' ' + model.sort.sorttype + ',date DESC');
        cl.SetFieldWeights({
            logistics_tjlogisinfo_carlist: 0,
            logistics_zjlogisinfo_carlist: 0,
            logistics_yclogisinfo_carlist: 1,
            logistics_vehicle_list: 2
        });
        cl.SetIndexWeights({sCity: 100, eCity: 10, loadWeight32: 1, vehicleLength32: 0, vehicleType: 0});

        /*
         *设置查询过滤条件
         */
        if (model.filter.gweight) {
            info_dict.goods_weight.forEach(function (item, index) {
                if (item.id == model.filter.gweight && item.name != "不限") {
                    cl.SetFilterRange('loadWeight32', item.value[0], item.value[1]);
                }
            });
        }

        if (model.filter.sweight && model.filter.eweight) {
            cl.SetFilterRange('loadWeight32', model.filter.sweight, model.filter.eweight);
        }
        else {
            if (model.filter.sweight) {
                cl.SetFilterRange('loadWeight32', model.filter.sweight, 9999999999);
            }
            if (model.filter.eweight) {
                cl.SetFilterRange('loadWeight32', 0, model.filter.eweight);
            }
        }

        if (model.filter.carlen) {
            info_dict.car_length.forEach(function (item, index) {
                if (item.id == model.filter.carlen && item.name != "不限") {
                    cl.SetFilterRange('vehicleLength32', item.value[0], item.value[1]);
                }
            });
        }

        if (model.filter.ctype) {
            info_dict.car_type.forEach(function (item, index) {
                if (item.id == model.filter.ctype) {
                    cl.SetFilterString('vehicleType', item.name,true);
                }
            });
        }

        if (model.filter.infotype) {
            cl.SetFilter('infoType', [model.filter.infotype]);
        }

        if (model.filter.scity && model.filter.scity != '全国') {
            model.filter.scity = model.filter.scity.replace('省', '').replace('市', '').replace('-', '');
            cl.SetFilterString('sCity', model.filter.scity);
        }
        if (model.filter.ecity && model.filter.ecity != '全国') {
            var ecitynumText = model.filter.ecity.replace('-', '');
            model.filter.ecity = model.filter.ecity.replace('省', '').replace('市', '').replace('-', '');
            cl.SetFilterString('eCity', model.filter.ecity);
        }

        var keywords = '';
        if (model.filter.scity && model.filter.scity != "全国") {
            keywords += model.filter.scity + '|';
        }
        if (model.filter.ecity && model.filter.ecity != "全国") {
            keywords += model.filter.ecity + '|';
        }
        if (model.filter.ctype) {
            info_dict.car_type.forEach(function (item, index) {
                if (item.id == model.filter.ctype) {
                    keywords += item.name + '|';
                }
            });
        }
        if (model.filter.gweight) {
            info_dict.goods_weight.forEach(function (item, index) {
                if (item.id == model.filter.gweight && item.name != "不限") {
                    keywords += item.value[0] + '|' + item.value[1] + '|';
                }
            });
        }
        if (model.filter.sweight) {
            keywords += model.filter.sweight + '|';
        }
        if (model.filter.eweight) {
            keywords += model.filter.eweight + '|';
        }

        if (model.filter.carlen) {
            info_dict.car_length.forEach(function (item, index) {
                if (item.id == model.filter.carlen && item.name != "不限") {
                    keywords += item.value[0] + '|' + item.value[1] + '|';
                }
            });
        }

        cl.Query('', model.index, function (err, result) {
            if (err || !result || result.total == 0) {
                return res.render('car/index', {
                    title: '车源信息',
                    model: model
                });
            }
            else {
//            if (err || result.matches.length == 0) {
//                cl.ResetFilters(); //清除过滤条件
//                cl.SetMatchMode(0);
//
//                cl.Query(keywords, model.index, function (err, result) {
//                    if (err) {
//                        console.error(err);
//                    }
//                    else {
//                        model.total = result.total;
//                        model.total_find = result.total_found;
//                        model.time = result.time;
//                        model.items = result.matches;
//
//                        model.items.forEach(function (item) {
//                            keywords.split('|').forEach(function (word) {
//                                if (word) {
//                                    item.attrs.infotext = item.attrs.infotext.replace(word, "<font color=red>" + word + "</font>");
//                                }
//                            });
//                        });
//                        return res.render('car/index', {
//                            title: '车源信息',
//                            model: model
//                        });
//                    }
//                });
//            }
//            else {
//                model.total = result.total;
//                model.total_find = result.total_found;
//                model.time = result.time;
//                model.items = result.matches;
//
//                model.items.forEach(function (item) {
//                    keywords.split('|').forEach(function (word) {
//                        if (word) {
//                            item.attrs.infotext = item.attrs.infotext.replace(word, "<font color=red>" + word + "</font>");
//                        }
//                    });
//                });
//                return res.render('car/index', {
//                    title: '车源信息',
//                    model: model
//                });
//            }
                model.total = result.total;
                model.total_find = result.total_found;
                model.time = result.time;
                model.items = result.matches;

                model.items.forEach(function (item) {
                    keywords.split('|').forEach(function (word) {
                        if (word) {
                            item.attrs.infotext = item.attrs.infotext.replace(word, "<font color=red>" + word + "</font>");
                        }
                    });
                });
                return res.render('car/index', {
                    title: '车源信息',
                    model: model
                });
            }
        });
    },
Exemple #2
0
    GetCarList: function (req, res, next) {
        /*
         * 初始化参数
         */
        var model = {
            filter: {
                gweight: req.query.gweight || '',
                sweight: Number(req.query.sweight) || '',
                eweight: Number(req.query.eweight) || '',
                carlen: req.query.carlen || '',
                ctype: '',
                scitynum: '',
                ecitynum: ''
            },
            page: {
                page_index: Number(req.query.page) || 0,
                page_size: Number(req.query.pagesize) || 15
            },
            index: 'logistics_vehicle_list,logistics_yclogisinfo_carlist,logistics_zjlogisinfo_carlist,logistics_tjlogisinfo_carlist',
            sort: {filed: req.query.sort || 'date', sorttype: req.query.sorttype || 'DESC'},
            total_find: 0,
            total: 0,
            time: 0,
            items: []
        };

        if (req.query.scitynum && req.query.scitynum != '全国') {
            model.filter.scitynum = req.query.scitynum;
        }
        if (req.query.ecitynum && req.query.ecitynum != '全国') {
            model.filter.ecitynum = req.query.ecitynum;
        }
        if (req.query.ctype) {
            model.filter.ctype = req.query.ctype;
        }

        /*
         *初始化sphinx
         */
        var cl = new SphinxClient();
        cl.SetServer(settings.sphinx.host, settings.sphinx.port);
        cl.SetLimits(model.page.page_index * 15, model.page.page_size, 100000);

        cl.SetMaxQueryTime(20);
        cl.SetMatchMode(6);
        cl.SetRankingMode(7);
        cl.SetSortMode(4, model.sort.filed + ' ' + model.sort.sorttype + ',date DESC');
        cl.SetIndexWeights({
            logistics_tjlogisinfo_carlist: 0,
            logistics_zjlogisinfo_carlist: 0,
            logistics_yclogisinfo_carlist: 1,
            logistics_vehicle_list: 2
        });

        /*
         *设置查询过滤条件
         */
        if (model.filter.gweight) {
            info_dict.goods_weight.forEach(function (item, index) {
                if (item.id == model.filter.gweight && item.name != "不限") {
                    cl.SetFilterRange('loadWeight32', item.value[0], item.value[1]);
                }
            });
        }

        if (model.filter.sweight && model.filter.eweight) {
            cl.SetFilterRange('loadWeight32', model.filter.sweight, model.filter.eweight);
        }
        else {
            if (model.filter.sweight) {
                cl.SetFilterRange('loadWeight32', model.filter.sweight, 9999);
            }
            if (model.filter.eweight) {
                cl.SetFilterRange('loadWeight32', 0, model.filter.eweight);
            }
        }

        if (model.filter.carlen) {
            info_dict.car_length.forEach(function (item, index) {
                if (item.id == model.filter.carlen && item.name != "不限") {
                    cl.SetFilterRange('vehicleLength32', item.value[0], item.value[1]);
                }
            });
        }

        if (model.filter.ctype) {
            info_dict.goods_type.forEach(function (item, index) {
                if (item.id == model.filter.ctype) {
                    cl.SetFilterString('vehicleType', item.name,true);
                }
            });
        }

        if (model.filter.scitynum && model.filter.scitynum != '全国') {
            model.filter.scitynum = model.filter.scitynum.replace('省', '').replace('市', '').replace('-', '');
            cl.SetFilterString('sCity', model.filter.scitynum);
        }
        if (model.filter.ecitynum && model.filter.ecitynum != '全国') {
            var ecitynumText = model.filter.ecitynum.replace('-', '');
            model.filter.ecitynum = model.filter.ecitynum.replace('省', '').replace('市', '').replace('-', '');
            cl.SetFilter('eCity', model.filter.ecitynum);
        }

        var keywords = '';
        if (model.filter.scitynum && model.filter.scitynum != "全国") {
            keywords += model.filter.scitynum + '|';
        }
        if (model.filter.ecitynum && model.filter.ecitynum != "全国") {
            keywords += model.filter.ecitynum + '|';
        }
        if (model.filter.ctype) {
            info_dict.goods_type.forEach(function (item, index) {
                if (item.id == model.filter.ctype) {
                    filterStr += item.name + '|';
                }
            });
        }
        if (model.filter.gweight) {
            info_dict.goods_weight.forEach(function (item, index) {
                if (item.id == model.filter.gweight && item.name != "不限") {
                    keywords += item.value[0] + '|' + item.value[1] + '|';
                }
            });
        }
        if (model.filter.sweight) {
            keywords += model.filter.sweight + '|';
        }
        if (model.filter.eweight) {
            keywords += model.filter.eweight + '|';
        }

        if (model.filter.carlen) {
            info_dict.car_length.forEach(function (item, index) {
                if (item.id == model.filter.carlen && item.name != "不限") {
                    keywords += item.value[0] + '|' + item.value[1] + '|';
                }
            });
        }

        cl.Query('', model.index, function (err, result) {
            if (err || !result.matches || result.matches.length <= 0) {
                cl.ResetFilters(); //清除过滤条件
                cl.SetMatchMode(0);

                cl.Query(keywords, model.index, function (err, result) {
                    if (err || !result.matches || result.matches.length <= 0) {
                        res.send(JSON.stringify({}));
                    }
                    else {
                        model.total = result.total;
                        model.total_find = result.total_found;
                        model.time = result.time;
                        model.items = result.matches;
                        res.send(JSON.stringify(model));
                    }
                });
            }
            else {
                model.total = result.total;
                model.total_find = result.total_found;
                model.time = result.time;
                model.items = result.matches;
                res.send(JSON.stringify(model));
            }
        });
    },