itemsapi / itemsjs

Extremely fast faceted search engine in JavaScript - lightweight, flexible, and simple to use
Apache License 2.0
346 stars 41 forks source link

Need for several search comparaison operators #121

Closed Bartaf83 closed 1 year ago

Bartaf83 commented 1 year ago

There's nothing apparently related to any search comparison settings in the documentation Or a way to provide the search logic to itemjs engine Can such as features be available in next new versions ?

cigolpl commented 1 year ago

Do you mean relevancy algorithms ? ItemsJS can integrate with any JS fulltext search so you can configure results orders as much as you want

Bartaf83 commented 1 year ago

Nope, I mean that the comparaison would use an "include" instead of the standard equality between strings, a "Starts With" or other operators that we can see for example in this module's feature options when making the search

cigolpl commented 1 year ago

Could you provide an example i.e. input, your expected output and some description ?

If you need filters options you can just use filter function:

var result = itemsjs.search({
  query: 'shoes',
  filter: function(item) {
    return item.rating >= 8 && item.reviews_count >= 200;
  }
});
Bartaf83 commented 1 year ago

Well, thanks , it's kinda what i've been looking for.

So i've been trying with the filter function , at first i made this first stackblitz in which I pass the data and the config and then I make the filtering and I'm getting two items as result in the console: image

But then I forked that same demo to make this second stackblitz in which I just inverted the boolean returned by the filter function (line 108 in the code) and I expected I would get the opposite result (which means the items which weren't part of the result in the first demo) but i got an empty array as items in the searchResult image

By doing that I'm trying to apply the NOT operator to the result I got at first but it's not working Can you please tell me why it's not working as expected ?