PostgreSQL, триграммы и сходство

Просто тестирую PostgreSQL 9.6.2 на моем Mac и играю с Ngrams. Предполагая, что есть индекс триграммы GIN на поле винодельни.

Предел сходства (я знаю, что это устарело):

SELECT set_limit(0.5);

Я строю поиск триграмм в таблице строк 2,3M.

Мой выбранный код:

SELECT winery, similarity(winery, 'chateau chevla blanc') AS similarity 
FROM usr_wines 
WHERE status=1 AND winery % 'chateau chevla blanc'  
ORDER BY similarity DESC;

Мои результаты (329 мс на моем Mac):

Chateau ChevL Blanc 0,85
Chateau Blanc   0,736842
Chateau Blanc   0,736842
Chateau Blanc   0,736842
Chateau Blanc   0,736842
Chateau Blanc,  0,736842
Chateau Blanc   0,736842
Chateau Cheval Blanc    0,727273
Chateau Cheval Blanc    0,727273
Chateau Cheval Blanc    0,727273
Chateau Cheval Blanc (7)    0,666667
Chateau Cheval Blanc Cbo    0,64
Chateau Du Cheval Blanc 0,64
Chateau Du Cheval Blanc 0,64

Ну, я не понимаю, как «Шато Блан» может иметь сходство> с "шато шеваль блан" в этом случае? Я понимаю, что два слова - это одно и то же "шато" и "блан", но другого слова "шеваль" нет.

Кроме того, почему «Chateau ChevL Blanc» является первым? Буква «а» отсутствует!

Что ж, моя цель - сопоставить все возможные дубликаты, когда я даю название винодельни, даже если оно введено неправильно. Что я пропустил?

8
задан alex.bour 1 April 2017 в 12:40
поделиться