我尝试在弹性搜索java api上使用正则表达式运行全文搜索。我的过滤器是这样的:ElasticSearch全文搜索
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();
感谢帮助。
有matchPhrasePrefixQuery方法,它的工作原理,但我不能用它与正则表达式。 – rLyLmZ 2014-09-11 07:48:45