use FtsIndexParam

pull/21617/head
Bowen Liang 7 months ago
parent ebf26882d3
commit 4cb6f5ae86

@ -1,10 +1,10 @@
import json
import logging
import math
from typing import Any
from typing import Any, Optional
from pydantic import BaseModel, model_validator
from pyobvector import VECTOR, ObVecClient # type: ignore
from pyobvector import VECTOR, ObVecClient, FtsIndexParam, FtsParser # type: ignore
from sqlalchemy import JSON, Column, String, func
from sqlalchemy.dialects.mysql import LONGTEXT
@ -112,21 +112,21 @@ class OceanBaseVector(BaseVector):
params=DEFAULT_OCEANBASE_HNSW_BUILD_PARAM,
)
fts_idxs: Optional[list[FtsIndexParam]]
if self._hybrid_search_enabled:
fts_idxs = [FtsIndexParam(index_name="fulltext_index_for_col_text",
field_names=["text"],
parser_type=FtsParser("ik"))]
else:
fts_idxs = None
self._client.create_table_with_index_params(
table_name=self._collection_name,
columns=cols,
vidxs=vidx_params,
fts_idxs=fts_idxs,
)
try:
if self._hybrid_search_enabled:
self._client.perform_raw_text_sql(f"""ALTER TABLE {self._collection_name}
ADD FULLTEXT INDEX fulltext_index_for_col_text (text) WITH PARSER ik""")
except Exception as e:
raise Exception(
"Failed to add fulltext index to the target table, your OceanBase version must be 4.3.5.1 or above "
+ "to support fulltext index and vector index in the same table",
e,
)
redis_client.set(collection_exist_cache_key, 1, ex=3600)
def _check_hybrid_search_support(self) -> bool:

Loading…
Cancel
Save