# 7.13. grn_expr¶

Grn_expr is an object that searches records with specified conditions and manipulates a database. It’s pronounced as gurun expression.

Conditions for searching records from a database can be represented by conbining condition expressions such as equal condition expression and less than condition expression with set operations such as AND, OR and NOT. Grn_expr executes those conditions to search records. You can also use advanced searches such as similar search and near search by grn_expr. You can also use flexible full text search. For example, you can control hit scores for specified words and improve recall by re-searching with high-recall algolithm dinamically. To determine whether re-searching or not, the number of matched rescords is used.

There are three ways to create grn_expr:

Query syntax is for common search form in Internet search site. It’s simple and easy to use but it has a limitation. You can not use all condition expressions and set operations in Query syntax. You can use Query syntax with query option in select.

Script syntax is ECMAScript like syntax. You can use all condition expressions and set operations in Script syntax. You can use Script syntax with filter option and scorer option in select.

You can use groonga as a library and create a grn_expr by calling grn_expr related APIs. You can use full features with calling APIs like Script syntax. Calling APIs is useful creating a custom syntax to create grn_expr. They are used in rroonga that is Ruby bindings of Groonga. Rroonga can create a grn_expr by Ruby’s syntax instead of parsing string.