## **Relevancy Tuning in Search**

SearchBlox supports relevance tuning of search results through URL parameters in the search query. Relevance can be tuned with standard and custom fields boosting.

### Standard Field Boosting

Standard Fields (title, description, URL, keywords, date recency, URL length and clicklog) can be boosted to tune the relevancy of search results

ParameterDescriptionDefault valueRange of valuesExample
tuneEnables or disables relevance tuningtruetrue or falsehttp://localhost:8080/searchblox/servlet/SearchServlet?query=time&tune=false
tune.0Weight used to increase relevance of document if search query appears in document **title** 51 to 100http://localhost:8080/searchblox/servlet/SearchServlet?query=time&tune.0=50
tune.1Weight used to increase relevance of document if search query appears in document **description** 31 to 100http://localhost:8080/searchblox/servlet/SearchServlet?query=time&tune.1=50
tune.2Weight used to increase relevance of document if search query appears in **keywords** meta field21 to 100http://localhost:8080/searchblox/servlet/SearchServlet?query=time&tune.2=50
tune.3Weight used to increase relevance of document if search query appears in document **url** 51 to 100http://localhost:8080/searchblox/servlet/SearchServlet?query=time&tune.3=50
tune.4Documents within 180 days are ranked higher than older documents. This sets the time period (in days) after which the relevance of documents decreases based on the document **last modified date**180Number of Days You can give any value between 1 and 1000http://localhost:8080/searchblox/servlet/SearchServlet?query=time&tune.4=30 Number of days = 30
tune.5Shorter urls will be ranked higher than longer urls based on **length** 101 to 100http://localhost:8080/searchblox/servlet/SearchServlet?query=time&tune.5=50
tune.6More the number of clicks made to the result, more will be the relevancy101 to 100http://localhost:8080/searchblox/servlet/SearchServlet?query=time&tune.6=50

It is also possible to boost multiple parameters while boosting as in the following examples:

To boost description and boost documents lesser than 30 days: [http://localhost:8080/searchblox/servlet/SearchServlet?query=time&tune.1=50&tune.4=30](🔗)

To boost keywords and URL: [http://localhost:8080/searchblox/servlet/SearchServlet?query=time&tune.2=50&tune.3=30](🔗)

Similarly, different combinations of tuning can be used based on user requirement. To boost results which have been viewed by the users and boost title [http://localhost:8080/searchblox/servlet/SearchServlet?query=time&tune.6=50&tune.0=30](🔗)

### Custom Field Boosting

Custom field boosting can be used by the user to boost fields such as metadata, file properties and other custom fields that are indexed in SearchBlox.

ParameterDescriptionDefault valueRange of ValuesExample
tune.fieldProvides the ability to facet on any fieldNoAny standard or custom field including term, number or date fields&tune.field=size&t.size.factor=10&t.size.modifier=square
tune.field.weightWeight to be used to increase relevance of document if search query appears in document custom field. This is for **text** fieldNo1 to 100&tune.field=author&t.author.value=john&t.author.weight=100
tune.field.factorThis factor is applicable for **numerical** field. Please make sure to add the custom numerical field in your mapping.json.No1 to 100&tune.field=size&t.size.factor=10&t.size.modifier=reciprocal
tune.field.modifierThis factor is applicable for **numerical** fields and has to be provided with **tune.field.factor** No**none** - Do not apply any multiplier to the field value **log** - Take the logarithm of the field value **log1p** Add 1 to the field value and take the logarithm **log2p** - Add 2 to the field value and take the logarithm **ln** - Take the natural logarithm of the field value **ln1p** - Add 1 to the field value and take the natural logarithm **ln2p** - Add 2 to the field value and take the natural logarithm **square** - Square the field value (multiply it by itself) **sqrt** - Take the square root of the field value **reciprocal** - Reciprocate the field value, same as 1/x where x is the field’s value **missing** - Value used if the document doesn’t have that field. The modifier and factor are still applied to it as though it were read from the document.To increase relevance larger documents **tune.field=size&t.size.factor=10&t.size.modifier=square** **square** - If square is provided as modifier greater the field value greater the relevance To reduce the relevance of larger documents **&tune.field=size&t.size.factor=10&t.size.modifier=reciprocal** **reciprocal** - If reciprocal is provided as modifier lower the field value greater the relevance

For a numerical field the mapping should be as shown in mapping.json or any other relevant file in SearchBlox. "numfield": { "type": "double", "store": true, "index": false },

### Collection Level Boosting

Boosting can be done at the collection level where results of one collection can be given more relevance or boosting over another. For this, the boost value in the collection settings can be specified within the range 1 - 9999. Collection has to be cleared and re-indexed after updating the boosting setting to take the effect.


### Search Level Boosting

Boosting can be done during Search by using ^ operator.

In the following example, _software_ is given boost over _test_, so results with _software_ will appear on top. **_test software^100_**

In this example, the _title_ field is given more boost over the _keywords _field, so the results with the title _world_ will appear on top. example, **_keywords:news title:world^500_**

Specific content types can be boosted by using the search query with the content type field.

example, **_library AND (contenttype:html OR *)_**

example, **_(library OR title:library) AND (contenttype:html OR *)_**

The search boosting query value can be passed through the filter param to avoid the user search term from being changed.



### Changing Relevance internally

Relevance value can be provided internally by editing ../webapps/searchblox/WEB-INF/relevance.yml The content of yml file will be as follows, the user can provide the weight as per their requirement.

After making changes, please restart the build, reindex and then perform the search.

## **Disabling Relevancy tuning**

You can disable relevancy tuning provided based on the preceding section by providing &tune=false in the search servlet URL example: http://localhost:8080/searchblox/servlet/SearchServlet?query=apple&tune=false