The problem with WhitespaceTokenizer is that is splits only on whitespace. If you have text like "This is, was some test." then you get tokens like "is," and "test." including the punctuations.

This is the reason why StandardTokenizer is normally used for human readable text. WhitespaceTokenizer is normally only used for special stuff like token lists (like tags) or uinque identifiers,...

As quick workaround while still keeping the %, you can add a CharFilter like MappingCharFilter before the Tokenizer that replaces the "%" char by something else which is not stripped off. As this is done for both indexing and searching this does not hurt you. How about a "percent emoji"? :-)

Another common "workaround" is also shown in some Solr default configurations typically used for product search: Those use WhitespaceTokenizer, followed by WordDelimiterFilter. WDF is then able to remove accents and handle stuff like product numbers correctly. There you can possibly make sure thet "%" survives.

Uwe

Am 20.09.2023 um 22:42 schrieb Amitesh Kumar:
Thanks Mikhail!

I have tried all other tokenizers from Lucene4.4. In case of
WhitespaceTokwnizer, it loses romanizing of special chars like - etc


On Wed, Sep 20, 2023 at 16:39 Mikhail Khludnev <m...@apache.org> wrote:

Hello,
Check the whitespace tokenizer.

On Wed, Sep 20, 2023 at 7:46 PM Amitesh Kumar <amiteshk...@gmail.com>
wrote:

Hi,

I am facing a requirement change to get % sign retained in searches. e.g.

Sample search docs:
1. Number of boys 50
2. My score was 50%
3. 40-50% for pass score

Search query: 50%
Expected results: Doc-2, Doc-3 i.e.
My score was
1. 50%
2. 40-50% for pass score

Actual result: All 3 documents (because tokenizer strips off the % both
during indexing as well as searching and hence matches all docs with 50
in
it.

On the implementation front, I am using a set of filters like
lowerCaseFilter, EnglishPossessiveFilter etc in addition to base
tokenizer
StandardTokenizer.

Per my analysis suggests, StandardTokenizer strips off the %  I am
facing a
requirement change to get % sign retained in searches. e.g

Sample search docs:
1. Number of boys 50
2. My score was 50%
3. 40-50% for pass score

Search query: 50%
Expected results: Doc-2, Doc-3 i.e.
My score was 50%
40-50% for pass score

Actual result: All 4 documents

On the implementation front, I am using a set of filters like
lowerCaseFilter, EnglishPossessiveFilter etc in addition to base
tokenizer
StandardTokenizer.

Per my analysis, StandardTOkenizer strips off the %  sign and hence the
behavior.Has someone faced similar requirement? Any help/guidance is
highly
appreciated.


--
Sincerely yours
Mikhail Khludnev

--
Uwe Schindler
Achterdiek 19, D-28357 Bremen
https://www.thetaphi.de
eMail: u...@thetaphi.de


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to