What is the difference between Fuzzy and Stemming requests in MsSql? Can you give examples of requests? For example on some resources write an example of Fuzzy using FREETEXT

 SELECT * FROM my_table WHERE FREETEXT(my_column, 'my search', LANGUAGE) 

And on other resources using FREETEXT describe Stemming .

So what is the difference between them and how to implement them?

    1 answer 1

    Fuzzy is a rather general term that can denote completely different algorithms.

    As for FREETEXT , it can be called fuzzy, because he is looking for not only what is indicated, but will also try to search by meaning, using word forms and synonyms (or substitutions) of words. Stemming (word form generation) is one of the stages in the work of FREETEXT .

    In addition to FREETEXT you can find (or invent) other fuzzy text search algorithms. For example, this is the way

     SELECT * FROM my_table WHERE DIFFERENCE(my_column, 'my search') >= 3 ORDER BY DIFFERENCE(my_column, 'my search') DESC 

    also somewhat fuzzy, but based on a comparison of the similarity of pronunciation, stemming is not used here.

    • And what then stemming? how to implement it? - LocalUser
    • @LocalUser, but it doesn’t need to be implemented specifically, it is already “wired” inside FREETEXT , but if you really want control over stemming, you can use CONTAINS instead of FREETEXT , where you can explicitly specify this using FORMSOF (INFLECTIONAL, ...) . - i-one