# MultiPhraseQuery in Elastic using NEST

**URL:** <https://discuss.elastic.co/t/multiphrasequery-in-elastic-using-nest/157218>\
**Category:** Elasticsearch\
**Created:** [November 18, 2018, 10:03am UTC](https://discuss.elastic.co/t/multiphrasequery-in-elastic-using-nest/157218 "2018-11-18T10:03:10Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![omri.suissa](https://avatars.discourse-cdn.com/v4/letter/o/d07c76/32.png) [@omri.suissa](https://discuss.elastic.co/u/omri.suissa)\
**Post date:** [November 18, 2018, 10:03am UTC](https://discuss.elastic.co/t/multiphrasequery-in-elastic-using-nest/157218/1 "2018-11-18T10:03:10Z")

</div>

Hi,  
I'm migrating from Lucene to Elastic (6.2.4).

Today we use Lucene's MultiPhraseQuery to set phrase queries in the same position. Elastic (and NEST) comes with a "MatchPhrase" query that can get only one phrase (string). There is an equivalent to MultiPhraseQuery as well?

---

<div class="post-metadata">

**Author:** ![forloop](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/forloop/32/9021_2.png) [@forloop](https://discuss.elastic.co/u/forloop)\
**Post date:** [November 26, 2018, 2:17am UTC](https://discuss.elastic.co/t/multiphrasequery-in-elastic-using-nest/157218/2 "2018-11-26T02:17:59Z")

</div>

It looks like Lucene's [`MultiPhraseQuery`](https://lucene.apache.org/core/7_1_0/core/org/apache/lucene/search/MultiPhraseQuery.html) maps to Elasticsearch's [Match Phrase Prefix query](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase-prefix.html), with prefix matches on the last term.

---

<div class="post-metadata">

**Author:** ![omri.suissa](https://avatars.discourse-cdn.com/v4/letter/o/d07c76/32.png) [@omri.suissa](https://discuss.elastic.co/u/omri.suissa)\
**Post date:** [November 26, 2018, 10:53am UTC](https://discuss.elastic.co/t/multiphrasequery-in-elastic-using-nest/157218/3 "2018-11-26T10:53:32Z")

</div>

@forloop, thank you for your response.  
I don't think MultiPhraseQuery (lucene) is equivalent to Match Phrase Prefix query (elastic).

MultiPhraseQuery is _"A generalized version of PhraseQuery, with the possibility of adding more than one term at the same position that are treated as a disjunction (OR)."_

While Match Phrase Prefix query is _"The match\_phrase\_prefix is the same as match\_phrase, except that it allows for prefix matches on the last term in the text"_

It is true that you can use both for some functionality, but it is not the same.  
The main feature for MultiPhraseQuery is the fact that both terms are in the same position.

Thanks

---

<div class="post-metadata">

**Author:** ![forloop](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/forloop/32/9021_2.png) [@forloop](https://discuss.elastic.co/u/forloop)\
**Post date:** [November 28, 2018, 3:20am UTC](https://discuss.elastic.co/t/multiphrasequery-in-elastic-using-nest/157218/4 "2018-11-28T03:20:17Z")

</div>

Gotcha!

It looks like `MultiPhrseQuery` is not exposed in the REST API of Elasticsearch; it's used internally in a few places but no exposed.

You should however be able to achieve similar functionality with [`span_near`](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-near-query.html) and nested [`span_or`](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-or-query.html) queries

---

<div class="post-metadata">

**Author:** ![omri.suissa](https://avatars.discourse-cdn.com/v4/letter/o/d07c76/32.png) [@omri.suissa](https://discuss.elastic.co/u/omri.suissa)\
**Post date:** [November 28, 2018, 6:25am UTC](https://discuss.elastic.co/t/multiphrasequery-in-elastic-using-nest/157218/5 "2018-11-28T06:25:59Z")

</div>

Thank you. span or is similar but with some main differences:  
1 - Performance is not as fast as MultiPhrseQuery  
2 - it calculates scoring differently (not dismax, but sum like bool query)

There is a way to expose it in the next version or with a patch?  
This is a powerful MultiPhrseQuery type in lucene.

Thanks!

---

<div class="post-metadata">

**Author:** ![forloop](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/forloop/32/9021_2.png) [@forloop](https://discuss.elastic.co/u/forloop)\
**Post date:** [November 28, 2018, 6:38am UTC](https://discuss.elastic.co/t/multiphrasequery-in-elastic-using-nest/157218/6 "2018-11-28T06:38:04Z")

</div>

I would recommend [opening a new issue on the Elasticsearch repository](https://github.com/elastic/elasticsearch/issues) first to discuss with folks from Elasticsearch core team.

---

<div class="post-metadata">

**Author:** ![omri.suissa](https://avatars.discourse-cdn.com/v4/letter/o/d07c76/32.png) [@omri.suissa](https://discuss.elastic.co/u/omri.suissa)\
**Post date:** [November 28, 2018, 6:48am UTC](https://discuss.elastic.co/t/multiphrasequery-in-elastic-using-nest/157218/7 "2018-11-28T06:48:49Z")

</div>

Thank you!

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [December 26, 2018, 6:48am UTC](https://discuss.elastic.co/t/multiphrasequery-in-elastic-using-nest/157218/8 "2018-12-26T06:48:59Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
