It depends on your definition of a similar one.
The edit-distance algorithm is a standard algorithm for Latin dictionary sentences and can work on whole texts. Two texts are similar if they have basically the same words (letters eh) in the same order. So the following two book reviews would be pretty similar:
1) "This is a great book"
2) "These are not great books"
(The number of letters to delete, insert, delete, or change to rotate (2) in (1) is called the “edit distance.”)
To implement this, you will want to visit each review programmatically. It may not be as expensive as it sounds, and if it is too expensive, you can perform comparisons as a background task and store the n-most similar ones in the database field itself.
Another approach is to understand the structure of (Latin) languages. If you separate short (non-capitialised or quoted) words and assign weight to words (or prefixes) that are common or unique, you can compare Bayesian comparisons. The following two book reviews can be matched and considered similar:
3) "The French Revolution was blah blah blah blah blah blah blah, France." → France / French (2) Revolution (1) War (1) Peace (1) (note that the dictionary is used to unite France and France)
4) "This book is a blah blah aa revolution in French cuisine." → France (1) Revolution (1)
To implement this, you would like to identify the keywords in the review when it was created / updated, and to search for similar reviews, use these keywords in the where-query sentence (ideally "full text" if the database supports it), it’s possible , after processing the results obtained to count the candidates found.
The books also have categories - thrillers installed in France, similar to historical studies of France, etc.? The metadata behind the heading and text can be useful for storing relevant results.