我尝试在elasticsearch java api 中使用正则表达式运行全文搜索。我的过滤器是这样的:
FilterBuilder qFilter= FilterBuilders.regexpFilter("_all",
". *"+text+". *");
但它只匹配一个单词而不是一个短语。我的意思是,例如:
如果源中有一个字符串,例如:“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时,该连接方法会抛出异常。
您可以像这样使用正则表达式过滤器。
FilterBuilder qFilter = FilterBuilders.regexpFilter("_all",(".*"+q+".*").replace(" ", ".*"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)