(
self,
query_set,
query_text,
query_embedding,
top_number: int,
similarity: float,
search_mode: SearchMode,
knowledge_id_list: list[str] = None,
)
| 275 | |
| 276 | class KeywordsSearch(ISearch): |
| 277 | def handle( |
| 278 | self, |
| 279 | query_set, |
| 280 | query_text, |
| 281 | query_embedding, |
| 282 | top_number: int, |
| 283 | similarity: float, |
| 284 | search_mode: SearchMode, |
| 285 | knowledge_id_list: list[str] = None, |
| 286 | ): |
| 287 | exec_sql, exec_params = generate_sql_by_query_dict( |
| 288 | {"keywords_query": query_set}, |
| 289 | select_string=get_file_content( |
| 290 | os.path.join(PROJECT_DIR, "apps", "knowledge", "sql", "keywords_search.sql") |
| 291 | ), |
| 292 | with_table_name=True, |
| 293 | ) |
| 294 | terms = ( |
| 295 | list(QuerySet(Termbase).filter(knowledge_id__in=knowledge_id_list).values_list("content", flat=True)) |
| 296 | if knowledge_id_list |
| 297 | else None |
| 298 | ) |
| 299 | embedding_model = select_list( |
| 300 | exec_sql, [to_query(query_text, user_words=terms), *exec_params, to_query(query_text, user_words=terms), similarity, top_number] |
| 301 | ) |
| 302 | return embedding_model |
| 303 | |
| 304 | def support(self, search_mode: SearchMode): |
| 305 | return search_mode.value == SearchMode.keywords.value |
nothing calls this directly
no test coverage detected