小编ron*_*ilp的帖子

用于在 ElasticSearch 中搜索短语的分析器

我正在使用 ElasticSearch 1.5.2。我想允许在我的搜索引擎中搜索短语。

假设文本是

read with section 114 of the Indian Penal Code

使用默认分析器,我无法在搜索查询中获得任何结果

section 114 penal code

所以,我添加了一个分析器:

        XContentBuilder settingsBuilder = XContentFactory.jsonBuilder()
            .startObject()
                .startObject("analysis")
                    .startObject("filter")
                        .startObject("filter_shingle")
                            .field("type","shingle")
                            .field("max_shingle_size",2)
                            .field("min_shingle_size",2)
                            .field("output_unigrams",false)
                        .endObject()
                        .startObject("filter_stemmer")
                            .field("type","porter_stem")
                            .field("language","English")
                        .endObject()
                    .endObject()
                    .startObject("tokenizer")
                        .startObject("my_ngram_tokenizer")
                            .field("type","nGram")
                            .field("min_gram",1)
                            .field("max_gram",1)
                        .endObject()
                    .endObject()
                    .startObject("analyzer")
                        .startObject("ShingleAnalyzer")
                            .field("tokenizer","my_ngram_tokenizer")
                            .array("filter","snowball","standard","lowercase","filter_stemmer","filter_shingle")
                        .endObject()
                    .endObject()
                .endObject()
            .endObject();

    client.admin().indices()
    .prepareCreate("temp_index").setSettings(settingsBuilder).get();
Run Code Online (Sandbox Code Playgroud)

我正在索引文件(已经是可接受的 json 格式),如下所示:

String file1 = readFile("1.txt");
IndexResponse response1 = client.prepareIndex("new_index","docs").setSource(file1).execute().actionGet();
Run Code Online (Sandbox Code Playgroud)

并使用matchQuery这样的方式进行查询:

MatchQueryBuilder mqb1 = QueryBuilders.matchPhraseQuery("text", str).analyzer("ShingleAnalyzer");
SearchResponse matchResponse1 = client.prepareSearch().setQuery(mqb1).execute().actionGet();
Run Code Online (Sandbox Code Playgroud)

但我仍然没有得到任何结果。你能建议我该怎么做吗?

编辑:实际上,当我尝试从这个分析器中获取任何类型的结果时,我没有得到任何结果......即使有一个查询“部分”,它存在于我索引的所有文档中,我没有得到结果,而,当我使用默认分析器进行搜索时,我得到了一些结果。那么,这个分析仪是不工作还是什么?

编辑:示例文档, …

java lucene query-analyzer analyzer elasticsearch

3
推荐指数
1
解决办法
1616
查看次数

如何在Oracle SQL Developer中计算标准偏差?

我有一个桌子员工,

CREATE TABLE employees (
employeeid NUMERIC(9) NOT NULL,
firstname VARCHAR(10),
lastname VARCHAR(20),
deptcode CHAR(5),
salary NUMERIC(9, 2),
  PRIMARY KEY(employeeid)
);
Run Code Online (Sandbox Code Playgroud)

我想计算工资的标准差.

这是我正在使用的代码:

select avg(salary) as mean, sqrt(sum((salary-avg(salary))*(salary-avg(salary)))/count(employeeid)) as SD 
from employees
group by employeeid;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ORA-00979: not a GROUP BY expression
00979. 00000 -  "not a GROUP BY expression"
*Cause:    
*Action:
Error at Line: 260 Column: 12
Run Code Online (Sandbox Code Playgroud)

第260行第12列是平均(工资)

我该如何解决这个问题?

sql oracle math group-by aggregate-functions

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

在Matlab中用循环创建矩阵

我想创建一个以下形式的矩阵

    Y = [1 x x.^2 x.^3 x.^4 x.^5 ... x.^100]
Run Code Online (Sandbox Code Playgroud)

设x是列向量.甚至更多的变种,如

    Y = [1 x1 x2 x3 (x1).^2 (x2).^2 (x3).^2 (x1.x2) (x2.x3) (x3.x1)]
Run Code Online (Sandbox Code Playgroud)

设x1,x2和x3为列向量让我们考虑第一个.我试过用类似的东西

    Y = [1 : x : x.^100]
Run Code Online (Sandbox Code Playgroud)

但这也没有用,因为它意味着取Y = [1 x 2.*x 3.*x ... x.^ 100]?(即,所有值在1到x.^ 100之间,差异为x)因此,这也不能用于生成这样的矩阵.请考虑x = [1; 2; 3; 4]; 并提出一种生成此矩阵的方法

    Y = [1 1 1 1 1;
         1 2 4 8 16;
         1 3 9 27 81;
         1 4 16 64 256];
Run Code Online (Sandbox Code Playgroud)

无需手动编写

    Y = [ones(size(x,1)) x x.^2 x.^3 x.^4]
Run Code Online (Sandbox Code Playgroud)

matlab matrix linear-algebra octave

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

哪个更快的C++ String length()或size()?

length()返回字符串中的字符数并size()返回一个size_t也是相同但用于使其与其他STL容器一致的字符数.

对于计算length(),字符串遍历所有字符并计算长度.所以,O(n)时间.

是否size()也一样呢?

或者可以及时直接计算变量的大小O(1)

所以,我的问题是,它们在速度方面是否相同(如计算它们的方式)还是在O(1)时间上计算尺寸?

c++ string size string-length time-complexity

0
推荐指数
2
解决办法
1903
查看次数