Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support word boundaries #7

Closed
peterbe opened this issue Aug 12, 2016 · 11 comments
Closed

Support word boundaries #7

peterbe opened this issue Aug 12, 2016 · 11 comments

Comments

@peterbe
Copy link

peterbe commented Aug 12, 2016

When I use the demo and search for the word and it finds and highlights b<mark ...>and</mark>s.

Would be great with an option to make it NOT match unless the words is limited by a word delimiter. E.g. match and highlight <mark>and</mark>erson and the full word <mark>and</mark>.

@bvaughn
Copy link
Owner

bvaughn commented Aug 12, 2016

Would be great with an option to make it NOT match unless the words is limited by a word delimiter.

I don't see how [and]erson is any more of a full word than b[and].

@bvaughn
Copy link
Owner

bvaughn commented Aug 12, 2016

This component does case-insensitive string matching in the same way that browser text search does. It would be possible to add support for prefix strings only (like I think you're requesting) but it's not a feature I've needed.

@peterbe
Copy link
Author

peterbe commented Aug 12, 2016

I don't see how [and]erson is any more of a full word than b[and].

I'd need for a search functionality. I display the results as the user types. Perhaps she's typed "and" in the midst of typing "anderson".

@bvaughn
Copy link
Owner

bvaughn commented Aug 12, 2016

Sounds like you want to enforce prefix string matching.

This component isn't meant for that (currently). It just does simple sub-string matching (again, like the browser does when you search text).

If you'd be interested in contributing though, it probably wouldn't be too hard to add support for this. :)

@peterbe
Copy link
Author

peterbe commented Aug 12, 2016

I might take a stab.
Many years ago I wrote this function.
If the text is "ian anderson is a band member" and the terms are ["and"] the outcome becomes "ian <b>anderson</b> is a band member".

That's quite nice when you're doing autocomplete because the back-end service will suggest "peter bengtsson", if the user has typed "ben".

See http://codepen.io/peterbe/pen/akXvJm?editors=0011#0

One neat feature of this is that if you have a stemmer to help, and the user types "searching" or "searches" it might find "searched" or "searcher". Quite fuzzy but potentially useful.

@bvaughn
Copy link
Owner

bvaughn commented Aug 12, 2016

Right, right. This component isn't intended for filtering, just sub-string highlighting. But I could see the usefulness for configuring its highlights to more closely match whatever searching/filtering library you're using. I just don't have the time to add it at the moment. :D

Btw I have some other libs you may find interesting if you're into search/stemming/etc. 😄 js-search, js-worker-search, treasure-data/redux-search.

@peterbe
Copy link
Author

peterbe commented Aug 12, 2016

Wow! That's really useful. I actually already got started with Elasticlunr.js. It was the best I could find when I did some googling. Now I definitely need to check out this js-search of yours. I like the idea of being able to stuff it in a web worker.

@bvaughn
Copy link
Owner

bvaughn commented Aug 12, 2016

:D Thanks!

I'm using redux-search (which is built on top of js-worker-search) in a production application right now and it's working great. No lag at all, even when indexing and searching many thousands of records.

@bvaughn
Copy link
Owner

bvaughn commented Sep 17, 2016

By the way, this is a regex-friendly component so you could always accomplish this via regex too. For example, to use your example above, instead of passing "and" you'd pass "\band".

It did not occur to me to point this out earlier. 😄

@bvaughn
Copy link
Owner

bvaughn commented May 27, 2017

Closed due to inactivity.

@bvaughn bvaughn closed this as completed May 27, 2017
@danloiterton
Copy link

danloiterton commented Aug 25, 2017

I was looking for this functionality also. Thanks for pointing out the regex option! I had to escape the word boundary though - so "\\band", for example.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants