Question

i want select similar rows accourding to row's title columun. Title columun has mostly have 5 or 6 six keywords. Which algorithm do you recommend ? Soundex Maybe ?

P.S: Title columun has unicode chracters like Ç, Ö, Ş...

Was it helpful?

Solution

My question's answer mysql full text search. Also it supports unicode.

    SELECT *, match(project_title) against('sample project 55') as similarity
    FROM projects
    WHERE status IN(1, 2, 3, 4, 5, 6) AND id != ? AND match('sample project 55') against(?)
    ORDER BY similarity DESC

OTHER TIPS

If you mean similar in spelling and pronunciation, I'd look into using the SOUNDEX function.

Honestly, I'd create a table for keywords(id, external_id, keyword), and then I would join the table against itself, order by how many matches there are, and then grab the rows back out.

If you're matching against a single row, you can select only that one, for much better efficiency with the join.

This could be combined with SOUNDEX to match together things that are close

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top