v6: Hybrid searchOperator is never sent (bm25_search_operator missing from the request)

Aberta Para iniciantes
#629 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
78/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
java

Direção de pesquisa

Leia src/main/java/io/weaviate/client6/v1/api/collections/query/Hybrid.java, especialmente Hybrid.protoBuilder() por volta das linhas 177–225, e compare o tratamento das opções com Bm25. Rastreie como searchOperator é anexado à solicitação e verifique se bm25_search_operator inclui as configurações and() e or(n); o trabalho estará concluído quando esses valores forem enviados em solicitações híbridas.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Summary

Hybrid.Builder.searchOperator(...) is accepted and stored, but Hybrid.protoBuilder() never writes it to the request, so bm25_search_operator is never sent. The keyword half of a hybrid query always runs with the server's default operator, whatever the caller asked for.

https://github.com/weaviate/java-client/blob/ff57caed14df5778ef715132d618383da559c1cc/src/main/java/io/weaviate/client6/v1/api/collections/query/Hybrid.java#L177-L225 (there is no reference to searchOperator between these lines)

Bm25 handles the same option correctly (searchOperator.appendTo(bm25)).

Reproduction (client 6.3.2, server 1.39.13)

Outgoing messages logged with a ClientInterceptor (Config.grpcChannelOptions):

collection.query.hybrid("zebra quokka", h -> h.alpha(0.5f).searchOperator(SearchOperator.and()));
// sent: query: "zebra quokka" | alpha: 0.5 | alpha_param: 0.5   — no bm25_search_operator

collection.query.bm25("zebra quokka", b -> b.searchOperator(SearchOperator.and()));
// sent: query: "zebra quokka" | search_operator { operator: OPERATOR_AND }

Behaviour confirms it: on a Weaviate Cloud cluster (1.39.13), for one query BM25 matched 2 objects with and() and 382 with or(1). Hybrid with alpha(0) gave a positive keyword score to 381 objects with either operator.

Expected

searchOperator is written to Hybrid.bm25_search_operator, including minimumOrTokensMatch for or(n).

Linguagem predominante
Java
Estrelas
34
Forks
29
Merge médio
2d 10h
PRs com merge (30d)
2

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de weaviate/java-client

Todas as issues de weaviate/java-client

Issues semelhantes

Mais issues de Java

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.