Skip to content

Commit

Permalink
feat: enable empty text search
Browse files Browse the repository at this point in the history
  • Loading branch information
anjaliagg9791 committed Oct 5, 2023
1 parent dc5aabe commit c501162
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 15 deletions.
3 changes: 0 additions & 3 deletions internal/server/v1beta1/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ func (server *APIServer) SearchAssets(ctx context.Context, req *compassv1beta1.S
}

text := strings.TrimSpace(req.GetText())
if text == "" {
return nil, status.Error(codes.InvalidArgument, "'text' must be specified")
}

cfg := asset.SearchConfig{
Text: text,
Expand Down
5 changes: 0 additions & 5 deletions internal/server/v1beta1/search_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,6 @@ func TestSearch(t *testing.T) {
}

testCases := []testCase{
{
Description: "should return invalid argument if 'text' parameter is empty or missing",
ExpectStatus: codes.InvalidArgument,
Request: &compassv1beta1.SearchAssetsRequest{},
},
{
Description: "should report internal server if asset searcher fails",
Request: &compassv1beta1.SearchAssetsRequest{
Expand Down
15 changes: 8 additions & 7 deletions internal/store/elasticsearch/discovery_search_repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,7 @@ const (

// Search the asset store
func (repo *DiscoveryRepository) Search(ctx context.Context, cfg asset.SearchConfig) (results []asset.SearchResult, err error) {
if strings.TrimSpace(cfg.Text) == "" {
return nil, asset.DiscoveryError{Op: "Search", Err: errors.New("search text cannot be empty")}
}
var returnedAssetFieldsResult []string

maxResults := cfg.MaxResults
if maxResults <= 0 {
maxResults = defaultMaxResults
Expand Down Expand Up @@ -242,6 +238,10 @@ func buildSuggestQuery(cfg asset.SearchConfig) (io.Reader, error) {
}

func buildTextQuery(q *elastic.BoolQuery, cfg asset.SearchConfig) {
if strings.TrimSpace(cfg.Text) == "" {
q.Should(elastic.NewMatchAllQuery())
}

boostedFields := []string{"urn^10", "name^5"}
q.Should(
// Phrase query cannot have `FUZZINESS`
Expand Down Expand Up @@ -314,12 +314,13 @@ func buildFilterExistsQueries(q *elastic.BoolQuery, fields []string) {

func buildFunctionScoreQuery(query elastic.Query, rankBy, text string) elastic.Query {
// Added exact match term query here so that exact match gets higher priority.
fsQuery := elastic.NewFunctionScoreQuery().
Add(
fsQuery := elastic.NewFunctionScoreQuery()
if text != "" {
fsQuery.Add(
elastic.NewTermQuery("name.keyword", text),
elastic.NewWeightFactorFunction(2),
)

}
if rankBy != "" {
fsQuery.AddScoreFunc(
elastic.NewFieldValueFactorFunction().
Expand Down

0 comments on commit c501162

Please sign in to comment.