flexsearch icon indicating copy to clipboard operation
flexsearch copied to clipboard

How to get the matching value with indexed array

Open JF-Cozy opened this issue 1 year ago • 3 comments

When dealing with complex documents, it is recommanded to use a foo[]:bar syntax to index array attributes.

The problem is that you can't know which value of the array matched the search in the results. For example, if we have a list of contacts that may contain several email addresses { emails: [{address: '[email protected]'}, {address: '[email protected]'}] }, and we do a search on tata, the result will include emails[].address without us knowing which email address it is precisely.

Is there a way to overcome this? It would be nice to know which array value matched the search.

JF-Cozy avatar Mar 29 '23 15:03 JF-Cozy

Did you set enrich=true when searching?

If yes then maybe you can try something like this if it works for you. I solved this like so:

E.g. I want to save a video transcript and search by keywords when something was said. And my file looks like so

type Transcript = {
  id: string;
  url: string;
  transcript: Array<{
    timestamp: string;
    transcript: string;
  }>;
};

And then I have the same problem as you. Because of that I loop over my array and create a object for each element which then looks like this

type FlexSearchDocument = {
  id: string;
  doc: {
    id: string;
    url: string;
    transcript: string;
    timestamp: string;
  };
};

In my case this is OK since what matters most is that I get the Id and Url. However, I can't yet estimate if the file is quickly getting big because of that...

zanzlender avatar Apr 04 '23 18:04 zanzlender

Also, #358

zanzlender avatar Apr 04 '23 18:04 zanzlender

No I didn't set enrich=true but tried with it, same problem so far. As the objects are quite big, and I already have them elsewhere, I prefer to keep only the ids.

JF-Cozy avatar Apr 05 '23 08:04 JF-Cozy