我正在寻找有关通配符精确短语搜索的帮助。
QueryBuilders.multiMatchQuery("Java Se", "title", "subtitle")
.type(MatchQueryBuilder.Type.PHRASE_PREFIX);
上面的查询,返回以下结果。
1)Java搜索
2) flex Java搜索
尾随通配符有效。
但是,当我像下面的查询一样进行搜索时,
QueryBuilders.multiMatchQuery("ava Se", "title", "subtitle")
.type(MatchQueryBuilder.Type.PHRASE_PREFIX);
它不返回任何内容,因为没有任何内容与“ava Se”完全匹配。
我期待与上述相同的结果。
前导通配符不起作用。
反正有实现这个目标的方法吗?
谢谢,
巴斯卡
最佳答案
如果查看“Type.PHRASE_PREFIX”的javadoc,您将看到仅字符串中的最后一项用作前缀,因此在您的情况下仅使用“Se”。
我在索引中尝试了该查询,它的工作原理是:.setQuery(QueryBuilders.matchQuery("body", "(.*?)ing the").type(MatchQueryBuilder.Type.PHRASE_PREFIX))
它返回的文档包含诸如“我们正在加强建议..”,“通过使用..”之类的短语。
关于elasticsearch - Elasticsearch -带有通配符的精确短语搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29552202/