xml地图|网站地图|网站标签 [设为首页] [加入收藏]

this实现基于内容的推荐

来源:http://www.ccidsi.com 作者:集成介绍 人气:137 发布时间:2019-06-19
摘要:mongo里面的数据是这样的:doc1 = {“freq”:1…..}doc2 = {“freq”:3…..} 1.restful 风格 client restClient 走的是http 协议,9200端口 restClient 使用与ElasticSearch版本非亲非故,那是一个十分的大的优势
mongo里面的数据是这样的:
doc1 = {
“freq”:1
…..
}
doc2 = {
“freq”:3
…..
}

1.restful 风格 client

restClient 走的是http 协议,9200端口
restClient 使用与ElasticSearch版本非亲非故,那是一个十分的大的优势

 public  static RestClient restClient;
    static {
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        restClient = RestClient.builder(new HttpHost("192.168.1.148",9200,"http"))
                .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                    @Override
                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                        return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    }
                }).build();
    }

ElasticSearch java API-使用More like this完毕基于内容的推荐

ElasticSearch java API-使用More like this达成基于内容的推介

据说内容的推荐介绍经常是给定一篇文书档案音讯,然后给用户推荐与该文书档案相识的文书档案。Lucene的api中有落实查询小说相似度的接口,叫MoreLikeThis。Elasticsearch封装了该接口,通过Elasticsearch的More like this查询接口,大家得以拾叁分便于的完结基于内容的推荐。
先看多个查询请求的json例子:

{ "more_like_this" : {"fields" : ["title", "content"],"like_text" : "text like this one"}}  

内部田野s是要同盟的字段,若是不填的话暗许是_all字段

like_text是极其的文书。

除却还足以加上上面条件来调解结果

percent_terms_to_match:相称项(term)的百分比,暗中认可是0.3

min_term_freq:一篇文书档案中多个词语至少出现次数,小于这几个值的词将被忽略,暗中认可是2

max_query_terms:一条查询语句中允许最多询问词语的个数,暗许是25

stop_words:设置结束词,相称时会忽略结束词

min_doc_freq:三个用语最少在有一点篇文书档案中现身,小于那些值的词会将被忽略,私下认可是无界定

max_doc_freq:多少个词语最多在多少篇文书档案中冒出,大于这一个值的词会将被忽视,私下认可是无界定

min_word_len:最小的辞藻长度,暗中同意是0

max_word_len:最多的用语长度,私下认可无界定

boost_terms:设置词语权重,暗中认可是1

boost:设置查询权重,暗许是1

analyzer:设置使用的分词器,默许是应用该字段钦点的分词器面介绍下什么用java api调用,一共有三种调用方式,可是本质上都是同一的,只但是是做了一些见仁见智水平的包裹。

MoreLikeThisRequestBuilder mlt = new MoreLikeThisRequestBuilder(client, "indexName", "indexType", "id");  mlt.setField("title");//匹配的字段  SearchResponse response = client.moreLikeThis(mlt.request()).actionGet();  

这种是在询问与某些id的文书档案相似的文书档案。这么些接口是直接在client那调用的,相比较特出。还会有三种正是协会Query进行查询

MoreLikeThisQueryBuilder query = QueryBuilders.moreLikeThisQuery();  query.boost(1.0f).likeText("测试").minTermFreq(10);  

这里的boost、likeText方法完全和地方的参数对应的。上面这种正是把要同盟的字段作为参数字传送进来,参数和MoreLikeThisQueryBuilder是一律的。

MoreLikeThisFieldQueryBuilder query = QueryBuilders.moreLikeThisFieldQuery("测试");

java API-使用More like this实现基于内容的推荐 ElasticSearch java API-使用More like this实现基于内容的引荐 基于剧情的引荐通常是给定一篇...

务求是计算出freq=1的文书档案个数,freq=2的文书档案的个数。。。 规范的mapreduce职务,正好试试mongo的mapreduce。 以为勉强能够,做一些简约的会合操作还凑活,看看回头有未有更复杂一些的利用。

2. java api client

java api client 通信走的是 tcp 协议,9300端口

    private static int port = 9300;
    private static String cluster = "192.168.1.1";
    private static String index = "idx-comment";   // 推荐数据
    private static String type = "commen";

       static {
         // 2.0.0 版本连接方式
        String[] hosts = testhost.split(",");
        Settings settings = Settings.settingsBuilder().put("cluster.name", cluster).put("client.transport.sniff", false).build();    // 开启集群嗅探功能
        try {
            client = TransportClient.builder().settings(settings).build();
            for (String host : hosts) {
                client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host), port));
            }
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
      // 5.0.0 版本连接方式
  /*      Settings esSettings = Settings.builder()
                .put("cluster.name", cluster) //设置ES实例的名称
                .put("client.transport.sniff", true) //自动嗅探整个集群的状态,把集群中其他ES节点的ip添加到本地的客户端列表中
                .build();
        try {
            client = new PreBuiltTransportClient(esSettings)
                    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(testhost), 9300));
            System.out.println("ElasticsearchClient 连接成功");
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }*/
    }

本文由68399皇家赌场发布于集成介绍,转载请注明出处:this实现基于内容的推荐

关键词: 68399皇家赌场 mapreduce mongodb 面试Java基础

上一篇:Justify at both sides

下一篇:没有了

最火资讯