All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.centit.search.service.IndexerSearcherFactory Maven / Gradle / Ivy

package com.centit.search.service;

import com.centit.search.service.Impl.ESIndexer;
import com.centit.search.service.Impl.ESSearcher;
import com.centit.support.algorithm.NumberBaseOpt;
import com.centit.support.file.PropertiesReader;
import org.apache.commons.lang3.StringUtils;

import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;

/**
 * Created by codefan on 17-6-22.
 */
@SuppressWarnings("unused")
public abstract class IndexerSearcherFactory {

    private static ConcurrentHashMap indexerMap
            = new ConcurrentHashMap<>();

    private static ConcurrentHashMap searcherMap
            = new ConcurrentHashMap<>();


    /**
     * 创建 索引客户端,或者 返回已经创建的 客户端
     *
     * @param config elastic search 服务器的配置信息
     * @param objTypes 索引对象类型
     * @return Indexer 索引器
     */

    public static Indexer obtainIndexer(ESServerConfig config, Class ... objTypes) {
        Indexer index = indexerMap.get(config.getIndexName());
        if(index!=null)
            return index;
        ESIndexer indexer = new ESIndexer(config);
        if(indexer.createIndexIfNotExist()){
            indexer.initMappingType(objTypes);
        }
        indexerMap.put(config.getIndexName(),indexer);
        return indexer;
    }

    /**
     * 创建 检索客户端,或者 返回已经创建的 客户端
     *
     * @param config elastic search 服务器的配置信息
     * @param objTypes 索引对象类型
     * @return Indexer 检索器
     */

    public static Searcher obtainSearcher(ESServerConfig config, Class ... objTypes) {
        Searcher search = searcherMap.get(config.getIndexName());
        if(search!=null)
            return search;
        ESSearcher searcher = new ESSearcher(config);
        searcher.initTypeFields(objTypes);
        searcher.setHightPreTags(new String[]{"

"}); searcher.setHightPostTags(new String[]{"

"}); searcherMap.put(config.getIndexName(),searcher); return searcher; } /** * 从 属性文件 中读取 elastic search 服务器的配置信息 * @param properties 属性文件 * @return elastic search 服务器的配置信息 */ public static ESServerConfig loadESServerConfigFormProperties(Properties properties ){ ESServerConfig config = new ESServerConfig(); config.setServerHostIp(properties.getProperty("elasticsearch.server.ip")); config.setServerHostPort(NumberBaseOpt.castObjectToInteger( properties.getProperty("elasticsearch.server.port"))); config.setClusterName(properties.getProperty("elasticsearch.server.cluster")); config.setIndexName( StringUtils.lowerCase(properties.getProperty("elasticsearch.index"))); config.setOsId(properties.getProperty("elasticsearch.osId")); config.setMinScore(NumberBaseOpt.parseFloat( properties.getProperty("elasticsearch.filter.minScore"), 0.5f)); return config; } public static ESServerConfig loadESServerConfigFormProperties(String propertiesFile ){ Properties properties = PropertiesReader.getClassPathProperties(propertiesFile); return loadESServerConfigFormProperties(properties); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy