itemsapi / itemsjs

Extremely fast faceted search engine in JavaScript - lightweight, flexible, and simple to use

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

searchableFields does not work well if array items contain dashes or spaces

LouisRoyT opened this issue · comments

When items in the dataset have a (flat)array property, searching through that flat array using "config.searchableFields" only works reliably if the strings are "simple" (no dashes or spaces).

For instance, given the following config & dataset, I believe the expectation would be searching for "bananas", "CL-bananas", "plums" or "oranges" should return the item with id = 1. This is NOT what happens.

searchTerm:"oranges" works fine
searchTerm:"CL" matches, but "CL-bananas" does not
searchTerm:"purple" matches, but "purple plums", "plums" do not

config = { searchableFields: ["fruits"] },
items = [
      {
        id: "1",
        fruits: [
          "CL-bananas", "purple plums", "oranges"
        ]
      },
      //...
];

Codepen reproduction:
https://codepen.io/louisroyt/pen/abXvBNo

I'd like to suggest integrating with Lunr 2.0 for the search functionality. I believe that by leveraging Lunr 2.0, the search queries can be enhanced and made significantly better. More info here: https://github.com/itemsapi/itemsjs/blob/master/docs/lunr2-integration.md and there is Lunr 2 query interface - https://lunrjs.com/guides/searching.html#scoring

Thanks for the quick response. I will try this approach and get back to you.