# BM25BuiltInFunction

> **Class** in `langchain_milvus`

📖 [View in docs](https://reference.langchain.com/python/langchain-milvus/function/BM25BuiltInFunction)

Milvus BM25 built-in function.

Supports both single-language and multi-language analyzers.

See:
- https://milvus.io/docs/full-text-search.md
- https://milvus.io/docs/multi-language-analyzers.md

## Signature

```python
BM25BuiltInFunction(
    self,
    *,
    input_field_names: str = TEXT_FIELD,
    output_field_names: str = SPARSE_VECTOR_FIELD,
    analyzer_params: Optional[Dict[Any, Any]] = None,
    multi_analyzer_params: Optional[Dict[Any, Any]] = None,
    enable_match: bool = False,
    function_name: Optional[str] = None,
)
```

## Description

**Example for single-language analyzer:**

BM25BuiltInFunction(
    analyzer_params={"type": "english"}
)

**Example for multi-language analyzers:**

BM25BuiltInFunction(
    multi_analyzer_params={
        "analyzers": {
            "english": {"type": "english"},
            "chinese": {"type": "chinese"},
            "default": {"tokenizer": "icu"}
        },
        "by_field": "language",
        "alias": {
            "cn": "chinese",
            "en": "english"
        }
    }
)

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `input_field_names` | `str` | No | The name of the input field, default is 'text'. (default: `TEXT_FIELD`) |
| `output_field_names` | `str` | No | The name of the output field, default is 'sparse'. (default: `SPARSE_VECTOR_FIELD`) |
| `analyzer_params` | `Optional[Dict[Any, Any]]` | No | The parameters for the analyzer. Default is None. See: https://milvus.io/docs/analyzer-overview.md#Analyzer-Overview (default: `None`) |
| `multi_analyzer_params` | `Optional[Dict[Any, Any]]` | No | The parameters for multi-language analyzers. Default is None. See: https://milvus.io/docs/multi-language-analyzers.md This parameter is mutually exclusive with analyzer_params. Example:     {         "analyzers": {             "english": {"type": "english"},             "chinese": {"type": "chinese"},             "default": {"tokenizer": "icu"}         },         "by_field": "language",         "alias": {             "cn": "chinese",             "en": "english"         }     } (default: `None`) |
| `enable_match` | `bool` | No | Whether to enable match. (default: `False`) |
| `function_name` | `Optional[str]` | No | The name of the function. Default is None, which means a random name will be generated. (default: `None`) |

## Extends

- `BaseMilvusBuiltInFunction`

## Constructors

```python
__init__(
    self,
    *,
    input_field_names: str = TEXT_FIELD,
    output_field_names: str = SPARSE_VECTOR_FIELD,
    analyzer_params: Optional[Dict[Any, Any]] = None,
    multi_analyzer_params: Optional[Dict[Any, Any]] = None,
    enable_match: bool = False,
    function_name: Optional[str] = None,
)
```

| Name | Type |
|------|------|
| `input_field_names` | `str` |
| `output_field_names` | `str` |
| `analyzer_params` | `Optional[Dict[Any, Any]]` |
| `multi_analyzer_params` | `Optional[Dict[Any, Any]]` |
| `enable_match` | `bool` |
| `function_name` | `Optional[str]` |


## Properties

- `analyzer_params`
- `multi_analyzer_params`
- `enable_match`

## Methods

- [`get_input_field_schema_kwargs()`](https://reference.langchain.com/python/langchain-milvus/function/BM25BuiltInFunction/get_input_field_schema_kwargs)

---

[View source on GitHub](https://github.com/langchain-ai/langchain-milvus/blob/fe9d63e6dcae52e4c2e2ef4dafd5a6f7ee9b254c/libs/milvus/langchain_milvus/function.py#L38)