Чтоб так было “дог” и “догс” должны превращаться в одно слово с помощью wordforms, а не в разные, а у вас “дог” становится “догс”, а “догс” становится “дог”. Просто меняете слова местами:
➜ ~ cat /tmp/wf
dog > dogs
dogs > dog
➜ ~ mysql -P9306 -h0 -e "drop table if exists t; create table t(f text) wordforms='/tmp/wf'; call keywords('dog dogs', 't')"
+------+-----------+------------+
| qpos | tokenized | normalized |
+------+-----------+------------+
| 1 | dog | dogs |
| 2 | dogs | dog |
+------+-----------+------------+
Должно быть так:
➜ ~ cat /tmp/wf
dogs > dog
➜ ~ mysql -P9306 -h0 -e "drop table if exists t; create table t(f text) wordforms='/tmp/wf'; call keywords('dog dogs', 't')"
+------+-----------+------------+
| qpos | tokenized | normalized |
+------+-----------+------------+
| 1 | dog | dog |
| 2 | dogs | dog |
+------+-----------+------------+
Спасибо за быстрое разъяснение. Буду тестить. Мне по логике казался мой подход верный, также я учитывается то, что в вордформс одно слово можно преобразовать только один раз…
П.с. скажите а Дог и дог это понимается как одно слово или же два разных?
все слова проходят трансформацию charset_table - если у вас используется default - то все слова преобразуются к нижнему регистру и исходные Dog и dog становятся dog
Вы можете использовать вызов call keywords('dog dogs', 't') чтобы смотреть на результат токенизации, как приведено выше
Спасибо! Однако важный момент как правильно составлять wordforms, то есть итожим всё к единственному числу или к множествненому? Ну в смисле что > куда или куда > что, так сказать - перенаправляем в случае, когда более одного перенаправления на один результат.