小编use*_*332的帖子

Elasticsearch评分禁用IDF

我正在使用ES搜索使用模糊搜索技术的大量人名.

TF适用于评分,但在这种情况下我并不需要IDF.这真的是在稀释分数.我仍然希望将TF和Field Norm应用于分数.

如何为我的查询禁用/抑制IDF,但保留TF和Field Norm?

我遇到了禁用IDF计算线程,但它没有帮助我.在这种情况下,似乎常数分数查询也无法帮助我.

tf-idf elasticsearch

11
推荐指数
1
解决办法
2134
查看次数

远期指数vs倒立指数为什么?

我正在阅读有关倒排索引(由Solr,Elastic Search等文本搜索引擎使用)和我理解(如果我们以"Person"为例):

Person关系的属性被反转:

John -> PersonId(1), PersonId(2), PersonId(3)
London -> PersonId(1), PersonId(2), PersonId(5)
Run Code Online (Sandbox Code Playgroud)

我现在可以搜索"居住在伦敦的约翰"的人事记录

这不解决所有问题吗?为什么我们有前向(或常规数据库索引)?或者换句话说,在什么情况下常规索引是有用的?请解释.谢谢.

lucene solr inverted-index elasticsearch forward-indexing

9
推荐指数
2
解决办法
7070
查看次数

Elasticsearch批量索引api通过休息端点

这是我的要求:

POST /_bulk
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{"firstname":"first_name1","lastname":"last_name1"},
{"firstname":"first_name2","lastname":"last_name2"},
{"firstname":"first_name3","lastname":"last_name3"}}
Run Code Online (Sandbox Code Playgroud)

这是错误:

{    "error": "IllegalArgumentException[Malformed action/metadata line [3], expected START_OBJECT or END_OBJECT but found
Run Code Online (Sandbox Code Playgroud)

[VALUE_STRING]]","状态":500}

基本上,每个文档都是{"firstname":___,"lastname":____}我不想将它们包装到父字段中.我从根本上缺少什么?

elasticsearch elasticsearch-plugin

9
推荐指数
1
解决办法
8766
查看次数

H2 vs HSQLDB vs Derby | 报告应用程序的内存 RDBMS

我正在设计一个用于动态报告的数据 REST API。基本上,您将数据传递给它(以及操作数据的函数),它会返回一个 HTML,其中包含应用于数据的函数。通常,这些功能是过滤、分组、聚合、排序(常规 RDBMS 提供的功能)。我正在考虑为此使用内存数据库。通过这样做,我将简单地利用 DB 提供的功能,而不必自己实现。

但是,这需要服务加载数据(可能是批量加载),然后运行动态构造的一系列查询 - 作为每个服务调用的一部分。

要加载到数据库中的数据(输入)最多可以有 100K 行。当然不是百万!

但是服务可以被不同的线程访问(每个线程都会将它们的数据集加载到数据库中并并发读取)。当然,jdbc 连接将被合并,表将在每个事务结束时被截断。

我在问自己,我是否过火并试图利用内存数据库?我自己(并且经常听到)关于内存数据库(尤其是 H2 和 HSQL)仅在集成测试的上下文中使用过它。

很想听听你的意见。

derby h2 hsqldb in-memory-database

6
推荐指数
0
解决办法
4060
查看次数

Reactor Mono vs CompletableFuture

刚刚开始探索反应堆项目及其抽象Mono和Flux,并希望了解与java 8准系统CompletableFuture的基本差异.

这是一个简单的代码:

public static void main(String[] args) throws Exception {

    Mono.fromCallable(() -> getData())
            .map(s -> s + " World ")
            .subscribe(s -> System.out.println(s));

    CompletableFuture.supplyAsync(() -> getData())
            .thenAccept(System.out::println);

    System.out.println(Thread.currentThread()+" End ");
}

private static String getData() {

    int j=0;

    for(int i=0; i<Integer.MAX_VALUE; i++){
        j = j - i%2;
    }

    System.out.println(Thread.currentThread()+" - "+j);
    return " Hello ";
}
Run Code Online (Sandbox Code Playgroud)

首先,没有惊喜CompletableFuture.supplyAsync通过ForkJoinPool调度执行函数,并立即打印"End"行,程序终止,因为主线程在这里真的很短暂 - 正如预期的那样.

Mono.fromCallable(...)阻塞主线程就在那里.此外,在getData()函数中打印的线程名称是主线程.所以我看到顺序/阻塞行为而不是顺序/非阻塞(异步)行为.是因为我在同一个线程上应用了一个订阅函数,它是阻塞的吗?有人可以解释一下吗?

spring java-8 project-reactor spring-webflux

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

Apache shiro身份验证,授权和带Active Directory的SSO

我是一个关于网络安全概念的完全新手,我有一个预先设想的概念,即保护应用程序是非常困难的.

看一下关于Apache shiro的视频,我感觉安全的复杂性都是以一个漂亮,简单,统一的API的形式抽象出来的.

我正在尝试编写一个安全层,负责基础SOAP Web服务的授权和SSO.

权限将全部来自LDAP(OpenDS),它将保留在我这边(即非外部),因为它们反映了我系统上可用的一系列功能.

我要求客户端可以在Active Directory(外部)中进行用户管理,一旦他们登录到AD(可能是他们的Windows登录),他们应该自动进行身份验证,以便能够使用我的服务.

然后我将检查用户是否拥有使用特定服务的正确授权.

这实际上意味着,身份验证是在外部完成的,但就我的边界而言,授权是在内部完成的.但我的安全层必须了解用户已经过身份验证并知道用户是谁.

这可以在Shiro实现吗?任何指针都会有很大的帮助.

active-directory shiro single-sign-on

5
推荐指数
0
解决办法
807
查看次数

基础知识| 线程与反应并发模型

我是反应式编程世界的全新手.我正在寻找Akka演员作为开始的一步.

我对基于线程的并发模型的理解是(例如基于Vanilla Servlet的模型):

  1. 对于来自客户端的每个请求,都会生成一个新线程.
  2. 这意味着所有底层代码的执行都附加到此线程并以串行方式发生.显然,即使代码的一部分存在瓶颈(远程Web服务调用等),线程也将被阻塞并等待并保持空闲状态.
  3. 服务器(容器)具有固定的线程池以容纳最大并发线程数,显然,由于瓶颈,它们将快速运行线程.

我对Reactive并发模型的理解是(例如基于Akka的模型):

  1. 所有逻辑不再附加到单个线程并串行执行.
  2. 执行流程是被动的(即在消息上,一个actor被触发).

现在我的问题:

假设两个模型中都存在远程Web服务调用的瓶颈.演员模型如何帮助提高CPU /核心利用率?我们不会有同样的问题,即演员中的执行线程被阻止了吗?例如:如果此网络服务呼叫同时阻止了200名参与者?这不意味着目前有200个线程被阻止吗?据我所知,还有其他演员会对其他上游事件做出反应.这是我们所说的更好地利用CPU吗?

在一个Threaded模型中,只是Threadpool的小尺寸问题的原因?

Actor子系统是否有一个线程池来产生一个新的actor并对特定事件作出反应?如果是,那么我们不会有同样的问题吗?

请原谅我这个问题是完全愚蠢的.

concurrency reactive-programming threadpool akka

5
推荐指数
1
解决办法
1368
查看次数

Java 8 Lambda,函数<String,Object>作为参数

Lambda Java 8中有趣的编译错误(Oracle JDK)

java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我有一个方法调用:

new CSVFile()
.of(new FileInputStream("MyFile.csv"))
.withColumnMapping("name", "fullName", s -> s.toUpperCase())
.withColumnMapping("gender", "gender", s -> s.toUpperCase());
Run Code Online (Sandbox Code Playgroud)

这是我试图调用的方法:

 public CSVFile withColumnMapping(final String columnName, final String   beanPropertyName, final Function<String, Object> columnTransformFunction) {
    columnMappings.add(new ColumnMapping(columnName, beanPropertyName, Optional.of(columnTransformFunction)));
    return this;
}
Run Code Online (Sandbox Code Playgroud)

我得到的编译错误是:

[ERROR] /Users/sai/fun/reactivecsv/src/test/java/reactivecsv/CSVFileTest.java:[26,50] cannot find symbol
[ERROR] symbol:   method toUpperCase()
[ERROR] location: variable s of type java.lang.Object
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这编译

Function<String, Object> …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 functional-interface

5
推荐指数
1
解决办法
804
查看次数

了解elasticsearch查询分数解释

我正在尝试破译 elasticsearch 响应中的解释 API。但是有点失落。对我来说有点难以遵循。任何简单的指针或链接将更具体地解释 JSON?我对 VSM 中的 TF、IDF 和余弦相似度有所了解。但更具体地需要一些关于 JSON 的指针。理想的情况是,如果我能找到对这个 JSON 的解释作为一个简单的数学表达式。

{
  "_explanation": {
    "value": 7.937373,
    "description": "sum of:",
    "details": [
      {
        "value": 2.4789724,
        "description": "weight(FirstName:M80806 in 35) [PerFieldSimilarity], result of:",
        "details": [
          {
            "value": 2.4789724,
            "description": "score(doc=35,freq=1.0), product of:",
            "details": [
              {
                "value": 0.37350902,
                "description": "queryWeight, product of:",
                "details": [
                  {
                    "value": 6.6369815,
                    "description": "idf(docFreq=720, maxDocs=202323)"
                  },
                  {
                    "value": 0.056276944,
                    "description": "queryNorm"
                  }
                ]
              },
              {
                "value": 6.6369815,
                "description": "fieldWeight in 35, product of:",
                "details": [
                  { …
Run Code Online (Sandbox Code Playgroud)

lucene tf-idf elasticsearch cosine-similarity

5
推荐指数
1
解决办法
1653
查看次数

Spring Reactor 线程模型

Spring Webflux (v 2.0.1.RELEASE) 的新手警报。

我想将 Spring Webflux 用于后端(Webless)应用程序,以处理来自 JMS 侦听器的大量数据。

我的理解是 Spring Webflux 提供了一个]非阻塞/异步并发模型。但是,我遇到了一个需要帮助的基本问题。作为免责声明,响应式编程的整个概念对我来说是非常新的,我仍然处于这种范式转变的过程中。

考虑这个代码:

Mono.just("ONE")
.map(item -> func(" A " + item))
.map(item -> func(" B " + item))
.map(item -> func(" C " + item))
.subscribe(System.out::println);

Mono.just("TWO")
.map(item -> func(" A " + item))
.map(item -> func(" B " + item))
.map(item -> func(" C " + item))
.subscribe(System.out::println);
Run Code Online (Sandbox Code Playgroud)

我从文档中了解到,在调用“订阅”函数之前,事件处理链不会发生任何事情。

但是在内部,spring 是否使用(如果愿意)为“map”函数内的每个函数异步使用单独的线程?如果 spring 为这些链使用“单一”线程,那么这里的真正目的是什么?它不是基于不同语法的阻塞和单线程模型吗?

我观察到代码总是按顺序运行并使用相同的线程。spring webflux的线程模型是什么?

java spring project-reactor spring-webflux

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