Поиск фраз типа «AB C DEF», но с разрешением расстояния между «AB C» и «DEF» - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь отфильтровать таблицу тезисов исследований, которые в большей степени связаны с topi c "РНК-секвенированием".

SELECT * FROM RNAseq
WHERE 
    MATCH (abstract_text) AGAINST ('"use RNAseq" "use RNA-seq" "use RNA"' IN NATURAL LANGUAGE MODE);

Однако это исключает такие предложения, как "Я буду используйте x, y и RNA-seq ... ". Есть ли способ MATCH AGAINST ('"use +upto200char+ RNA-seq"'), AKA искать случаи, когда «use» находится на определенном расстоянии (200 символов в примере) от «RNA-seq»? Я полагаю, что это, вероятно, должно быть сделано в python b / c, насколько я понимаю, MySQL не имеет этой возможности.

1 Ответ

0 голосов
/ 27 марта 2020

Вы можете использовать BOOLEAN MODE поиск, используя меру «расстояние» (указывается с помощью @), чтобы получить желаемые результаты, хотя вам нужно указать расстояние между use и RNA словами, а не символами. Этот запрос ищет любую из последовательностей use RNA, use RNA-seq или use RNAseq, содержащих до 18 слов (два слова включены в меру расстояния) между ними:

SELECT *
FROM RNAseq
WHERE MATCH abstract_text AGAINST('"use RNAseq" @20 "use RNA" @20 "use RNA-seq" @20' IN BOOLEAN MODE)
...