小编Bru*_*tos的帖子

使用Zookeeper加载均衡器

我正在尝试创建一个负载均衡器,以便在Zookeeper 3.4.6集群前面.当我这样做时,群集运行良好,但抛出异常:

WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn @ 357] - 捕获流末尾异常EndOfStreamException:无法从客户端sessionid 0x0读取其他数据,可能客户端已关闭
org.apache.zookeeper的套接字 . server.NIOServerCnxn.doIO
(NIOServerCnxn.java:228)atg.apache.zookeeper.server.NIOServerCnxnFactory.run (NIOServerCnxnFactory.java:208)
at java.lang.Thread.run(Thread.java:745)

这意味着Zookeeper将Load Balancer理解为客户端,并尝试与其建立连接.但负载均衡器只是ping TCP 2181并且出来了.

load-balancing apache-zookeeper

6
推荐指数
1
解决办法
1万
查看次数

使用不同查询分析器的Elasticsearch多匹配跨字段查询

用例: 我收藏了companies。每个公司都有city和的信息country。我希望能够进行文本搜索来查找例如曼谷-泰国的公司。所有信息都必须使用不同的语言进行搜索。示例:在巴西,大多数人用英语指曼谷,而不是巴西人Banguecoque。在这种情况下,如果某人想搜索泰国曼谷的公司,则搜索语句为bangkok tailandia。由于这一要求,我必须能够在不同的语言字段中进行搜索以检索结果。

问题: 在发送查询而未指定分析器Elasticsearch时,使用在每个字段配置上指定的search_analyzer。问题在于它破坏了跨字段查询的目的。这是分析器配置:

"query_analyzer_en": {
    "type": "custom",
    "tokenizer": "standard",
    "filter": [ "lowercase", "asciifolding", "stopwords_en" ]
},
"query_analyzer_pt": {
    "type": "custom",
    "tokenizer": "standard",
    "filter": [ "lowercase", "asciifolding", "stopwords_pt" ]
}
Run Code Online (Sandbox Code Playgroud)

每个分析器使用不同stop的语言过滤器。

这是字段配置:

"dynamic_templates": [{
    "english": {
        "match": "*_txt_en",
        "match_mapping_type": "string",
        "mapping": {
            "type": "string",
            "analyzer": "index_analyzer_en",
            "search_analyzer": "query_analyzer_en"
        }
    }
}, {
    "portuguese": {
        "match": "*_txt_pt",
        "match_mapping_type": "string",
        "mapping": {
            "type": "string",
            "analyzer": "index_analyzer_pt",
            "search_analyzer": "query_analyzer_pt"
        } …
Run Code Online (Sandbox Code Playgroud)

lucene elasticsearch

6
推荐指数
1
解决办法
2545
查看次数

Solr中的多个查询

我的问题是我在Solr中有n个字段(比如大约10个)可搜索,它们都被编入索引并存储.我想首先在我的5000个文档的整个索引上运行一个查询,这个文档将平均达到500个文档.接下来,我想在这500个文档上使用不同的关键字集查询,而不是在整个索引上查询.

因此,我第一次发送查询时会生成一个分数,第二次运行查询时,生成的新分数应该基于上一个查询的500个文档,或者换句话说,Solr应该只考虑这500个文档作为整个指数.

总而言之,5000的索引将被过滤到500然后50(5000> 500> 50).它基本上是过滤但我想在Solr中这样做.

我有合理的基础知识,还在学习.

更新:如果以数学方式表示,它将如下所示:

results1=f(query1)
results2=f(query2, results1)
final_results=f(query3, results2)
Run Code Online (Sandbox Code Playgroud)

我希望使用程序完成此操作,最终用户只能看到50个结果.因此,分面不是一种选择.

lucene search solr solrj solr4

5
推荐指数
2
解决办法
8666
查看次数