Как находить исходное однокоренное слово без суффикса?
Например, для слова "облачко" это будет "облако", для "собачка" - "собака" (интересуют только имена существительные)
Т.е. это не поиск словоформ, а поиск исходных однокоренных слов. В идеале хорошо бы найти бы готовую библиотеку на php, но даже не надеюсь на это. Но, возможно, есть какие-то четкие алгоритмы, которые дают нужный результат?
Насчет корней не знаю. Есть алгоритм Snowball https://snowballstem.org/demo.html#Russian
Он делает примерно то что нужно. Например сводит облако-облак. Сводит разные слова к основе.
А то что не смог свести ты можешь попробовать сам дописать в справочник или добавить свои суффиксы.
И у него есть несколько готовых реализаций на C#/Java. Я думаю что кто-то уже делал реализацию для PHP.
Увы, не то. Это стемминг - отсечение окончания от слова, такое я знаю и умею. Тут из "облако" получим "облак", а из "облачко" - "облачк", т.е. программно я не пойму, что это однокоренные слова, и что для слова "облачко" исходным является "облако"
Dr. Bacon Вы путаете морфологический разбор со словообразовательным. Словари по ссылкам - это приведение слова к его инфинитиву, т.е. если я задам "облачком", то с учетом морфологии получу "облачко", но не получу "облако". Или, например, "дом", "домик", "домишко", "домище" - это в таких словарях разные слова, а мне надо, чтоб все они были приведены к слову "дом" - именно это слово является для них исходным
mayton2019 если нужно для полнотекстового поиска, то, во-первых, есть библиотеки по стеммизации на разных платформах. Но по моему опыту - не лучший вариант, не знаю, как в других языках, но в русском нередко разные слова дают одинаковые стеммы, поэтому лучше использовать леммизацию. Или готовые движки, как выше советуют. Только я бы не Sphinx советовал, а https://manticoresearch.com/