当前位置: 首页 > 面试题库 >

ElasticSearch全文搜索

东龙野
2023-03-14
问题内容

我尝试在elasticsearchJava API上使用正则表达式运行全文搜索。我的过滤器是这样的:

  FilterBuilder qFilter= FilterBuilders.regexpFilter("_all",
 ". *"+text+". *");

但是它只与一个单词匹配,而没有短语匹配。我的意思是,例如:

如果soruce中有一个字符串,例如:“ one two three four five..”,而当我的文本字符串如下:“ two”,“
our”,“ thr” …时,它就起作用了。

但是,当我的realTimeTextIn字符串为“ two three”时,全文搜索将不起作用。我搜索的单词不能超过一个。

我在这里想念的是什么?

其余代码如下所示:

 FilterBuilder qFilter      = FilterBuilders.regexpFilter("_all", ".*"+q+".*");
  SearchResponse response  = ClientProvider.instance().getClient().prepareSearch(index)
                      .setTypes(type)
                      .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)                            
                      .setPostFilter(qFilter)                  
                      .setFrom(0).setSize(250).setExplain(true)       
                      .execute()
                      .actionGet();

感谢您的帮助。


问题答案:

当文本字符串为空或null时,此join方法将引发异常。您可以像这样使用regexp过滤器。

FilterBuilder qFilter = FilterBuilders.regexpFilter("_all",(".*"+q+".*").replace(" ", ".*"));


 类似资料:
  • 我尝试在弹性搜索java api上使用正则表达式运行全文搜索。我的过滤器是这样的: 但是它只与一个单词匹配,而不是与短语匹配。我的意思是,例如: 如果soruce中有一个字符串,如:“

  • 我使用的elasticsearch版本是ES2.2。我为全文搜索键入与官方教程相同的代码。(https://www.elastic.co/guide/en/elasticsearch/guide/current/match-query.html) 看来全文对我不起作用。我的设定有什么问题?谢谢! 我键入的代码如下: 返回的结果是: 当我输入精确的查询时,我只能得到一次命中,该查询存储在索引中。 输

  • 回顾 在前面的章节(分页),我们已经加强了数据库查询,因此能够在页面上获取各种查询。 今天,我们会继续探讨数据库的话题,只是领域不同。所有存储内容的应用程序必须提供搜索能力。 许多其它类型的网站可能使用了谷歌、必应等索引所有的内容并且提供查询结果。这个对于大多数静态页面的网站,像论坛,是很好用。我们应用程序 microblog 的基本单元是用户短小的 blog,不是整个页面。我们希望搜索结果是动态

  • 如果我在浏览器中直接对elasticsearch进行搜索,例如: http://localhost:9200/mydocs/_search?q=awesome%20搜索 搜索体数据实际上是什么样子的?它是否执行并包含所有字段?我尝试过编写一个包含所有字段的,但在浏览器中正确操作会得到不同的结果。

  • 问题内容: 我想在我的网页中进行全文搜索。我需要分页进行搜索。我的数据库每张表有50,000+行。我已经改变了我的表,并使其成为索引。该表始终处于更新状态,仍然有一个自动增加的列。而最新的总是在表格的末尾。 但整个查询时间将花费。我通过Google搜索了许多文章,有的文章写道,只有限制字段字长才能帮助更快地进行搜索。但作为一种类型,它会像这样改变一定的长度(我尝试过标题TEXT(500) CHAR

  • 问题内容: 这是我测试过的。 这是create语句。 等号和“赞”效果很好。所以为什么? 问题答案: 全文搜索需要多种多样的方式来消除重复的“噪音”。用最少的数据进行测试将产生较差的结果。将您的整个收藏集投入其中,以获取有意义的内容。如以下某些链接所示,甚至可以尝试搜索最小字数的设置。 停用词 有各种语言的停用词 MySql 列表,这些词表示在搜索过程中忽略的无关紧要的词。该列表已编译到服务器中,