fulltext in query doesn't work for partial search term | Community
Skip to main content
Community Advisor
March 22, 2021
Solved

fulltext in query doesn't work for partial search term

  • March 22, 2021
  • 4 replies
  • 4411 views

Hello 

We are not getting results for partial keywords search by query.

e.g.

It doesn't return results for below query

type=cq:Page
path=/content/mysite/us/en/resources
fulltext=Ind
 
But it gives results for below one.
type=cq:Page
path=/content/mysite/us/en/resources
fulltext=India
 
Is this an expected behavior or am I missing anything here?
 
Thanks
Swapnil
This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by salamswapnil

Thank you everyone for your responses. We are able to achieve expected behavior (partial keyword search) by appending '*' in the fulltext term.

e.g. Below query gives all the results having text "Ind[xxxxx]". This is similar to wildcard character search in lucene.

type=cq:Page
path=/content/mysite/us/en/resources
fulltext=Ind*
 
PS : It comes with slight performance overhead. 

4 replies

Rajalakshmi
Level 2
March 22, 2021

Hi @salamswapnil, full-text field searches for the whole word that matches the search key anywhere in webpages.

If your search key is "Ind" then it searches for Ind everywhere on pages

FYR => tothenew.com/blog/full-text-search-in-aem-using-query-builder/

 

 

 

kautuk_sahni
Community Manager
Community Manager
March 23, 2021
@rajalakshmi, Thank you for participating in the AEM community. Good to have AEM SME's like you. Looking forward to see you more into the community. Keep it up.
Kautuk Sahni
Asutosh_Jena_
Community Advisor
Community Advisor
March 22, 2021

Hi @salamswapnil 

The term "full-text" itself contains the answer. Whenever we use a full-text search as the predicate, AEM will internally try to look for any occurances where it can find the exact search text as a whole word.


It's exactly works in the same way as SQL2 below:
SELECT * FROM [nt:unstructured] WHERE ISDESCENDANTNODE('/jcr:root/content/mysite/us/en/resources') AND LOWER([prop]) LIKE "%Ind%" ORDER BY [cq:lastModified] desc


As you mentioned you are correct and it will always return the full text result if found any.

Hope this helps!
Thanks!

bilal_ahmad
Level 5
March 22, 2021

Hey @salamswapnil

 

The results you are getting are just right, as you're making use of fulltext search. You can create synonyms(a text file) and then based on your search text(like Ind = you'd expect to fetch it the result for India). Nicely explained by @albinis1 on his blog: https://medium.com/tech-learnings/how-to-enable-search-synonyms-in-aem-with-lucene-ccb780375eb4 

 

Hope this would help!

 

Thanks,

Bilal.

salamswapnilCommunity AdvisorAuthorAccepted solution
Community Advisor
April 5, 2021

Thank you everyone for your responses. We are able to achieve expected behavior (partial keyword search) by appending '*' in the fulltext term.

e.g. Below query gives all the results having text "Ind[xxxxx]". This is similar to wildcard character search in lucene.

type=cq:Page
path=/content/mysite/us/en/resources
fulltext=Ind*
 
PS : It comes with slight performance overhead.