# Tire: Document boost / "Not in" syntax

**URL:** <https://discuss.elastic.co/t/tire-document-boost-not-in-syntax/9475>\
**Category:** Elasticsearch\
**Created:** [October 26, 2012, 12:05am UTC](https://discuss.elastic.co/t/tire-document-boost-not-in-syntax/9475 "2012-10-26T00:05:29Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Elad\_Ossadon](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/elad_ossadon/32/2665_2.png) [@Elad\_Ossadon](https://discuss.elastic.co/u/Elad_Ossadon)\
**Post date:** [October 26, 2012, 12:05am UTC](https://discuss.elastic.co/t/tire-document-boost-not-in-syntax/9475/1 "2012-10-26T00:05:29Z")

</div>

2 questions:

1. With Sunspot I could have a boost command and add score to a document  
based on a calculation

searchable do  
...  
boost { popularity \* 0.1 }  
end

this would boost an instance based on a numeric fields named popularity.

How do I implement it with Tire?

1. How do I exclude results that match one value of a list? Let's say I  
want to exclude all documents with a field id is 1 or 2 or 3. (Like SQL's  
WHERE id NOT IN (1,2,3))

--

---

<div class="post-metadata">

**Author:** ![karmi](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/karmi/32/44951_2.png) [@karmi](https://discuss.elastic.co/u/karmi)\
**Post date:** [October 26, 2012, 6:57am UTC](https://discuss.elastic.co/t/tire-document-boost-not-in-syntax/9475/2 "2012-10-26T06:57:54Z")

</div>

Ad 1/, you can use a `custom_score_query`, providing it a script.  
See [https://github.com/karmi/tire/blob/master/test/integration/custom\_score\_queries\_test.rb#L29-45](https://github.com/karmi/tire/blob/master/test/integration/custom_score_queries_test.rb#L29-45)  
for example code.

Ad 2/, it depends a bit on context, but you can either use a `bool` query  
[[Elasticsearch Platform — Find real-time answers at scale | Elastic](http://www.elasticsearch.org/guide/reference/query-dsl/bool-query.html)]  
with a `must_not` clause, or a `filtered` query with a `not` filter  
[[Elasticsearch Platform — Find real-time answers at scale | Elastic](http://www.elasticsearch.org/guide/reference/query-dsl/filtered-query.html),  
[Elasticsearch Platform — Find real-time answers at scale | Elastic](http://www.elasticsearch.org/guide/reference/query-dsl/not-filter.html)]

Karel

On Friday, October 26, 2012 2:05:29 AM UTC+2, Elad Ossadon wrote:

> 2 questions:
> 
> 1. With Sunspot I could have a boost command and add score to a document  
> based on a calculation
> 
> searchable do  
> ...  
> boost { popularity \* 0.1 }  
> end
> 
> this would boost an instance based on a numeric fields named popularity.
> 
> How do I implement it with Tire?
> 
> 1. How do I exclude results that match one value of a list? Let's say I  
> want to exclude all documents with a field id is 1 or 2 or 3. (Like SQL's  
> WHERE id NOT IN (1,2,3))

--

---

<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:** [July 6, 2017, 3:07am UTC](https://discuss.elastic.co/t/tire-document-boost-not-in-syntax/9475/3 "2017-07-06T03:07:08Z")

</div>

Closed on July 6, 2017, 3:07am UTC


