gpt4 book ai didi

java - 在所有字段中查找 URL 的一部分 (elasticsearch)

转载 作者:太空宇宙 更新时间:2023-11-04 06:49:34 24 4
gpt4 key购买 nike

我有以下映射:

"urls": {
"type": "string",
"index_name": "url",
"boost": "1",
"analyzer": "aurlemail",
"store": "yes"
}

分析器定义如下:

index.analysis.analyzer.aurlemail:
type: custom
tokenizer: uax_url_email
filter: lowercase, fngramurl

index.analysis.filter.fngramurl:
type: nGram
min_gram: 3
max_gram: 20

我有<a href="http://www.google.com" rel="noreferrer noopener nofollow">http://www.google.com</a><a href="http://www.google.com/hugo" rel="noreferrer noopener nofollow">http://www.google.com/hugo</a>添加到索引中,两个单独的文档。

当我执行termQuery时在特定字段上,我得到了预期的命中(例如,我搜索 www.google.comgoogle.com ),但是当我只想要一个简单的查询时,我没有定义任何字段,我得到零结果。

代码如下所示:

client().prepareSearch("myindex").setQuery("www.google.com")
.execute().actionGet();

如何在无需指定 termQuery 的情况下获取结果、具体字段分别是?

更新

更具体地说:当我查询google,甚至com时,我也希望收到点击。由于定义的分析器(我想),这应该在索引中可用,但 matchQuery 都不是。也不是stringQuery按预期工作

更新2

有问题的ES版本是1.1.0

最佳答案

使用默认字段为“_all”的查询字符串查询。

client().prepareSearch("myindex").setQuery(QueryBuilders.queryString("www.google.com")
.defaultField("_all")).execute().actionGet();

更新

匹配查询

 client().prepareSearch("myindex").setQuery(QueryBuilders.matchQuery("_all", "google")).execute().actionGet();

希望有帮助..!

关于java - 在所有字段中查找 URL 的一部分 (elasticsearch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23517553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com