Bound Oracle Текст "рядом" оператор к тем же предложениям - PullRequest
1 голос
/ 31 марта 2020

У меня есть столбец, в котором хранятся абзацы с несколькими предложениями, и я использую оператор "Near", чтобы найти нужную запись. Однако можно ли ограничить близкое утверждение, которое ищет слова только в тех же предложениях.

Например:

Абзац

"Пожилой мужчина умер в результате коронавируса в Королевской больнице Хобарта в одночасье. Это следует за смертью женщины в возрасте 80 лет в Северо-западной региональной больнице в Берн ie в понедельник утром, и приносит национальный тариф до 19. "

indextype равен ctxsys.context

выберите оценку (1) из таблицы, где содержится (Paragraph, 'Near (coronavirus, смерть), 20, ложь) ', 1)> 0

Я хочу получить ничего , так как оба слова из разных предложений. Однако теперь он вернет мне положительное число, так как оба слова разделены менее чем на 20 слов.

Не могли бы вы поделиться с вами некоторыми идеями о том, как это сделать?

Заранее спасибо!

1 Ответ

2 голосов
/ 31 марта 2020

Запрос должен выглядеть следующим образом:

select score(1) 
from   tbl
where  contains(Paragraph, 'Near (coronavirus, death),20,false) 
                            WITHIN SENTENCE',1) > 0
;

То есть - используйте оператор WITHIN.

Обратите внимание, что вы должны указать индексу, чтобы он сначала распознал предложения. То есть: если вы создали индекс с оператором, подобным следующему:

create index ctxidx on tbl(Paragraph)
indextype is ctxsys.context
-- parameters(' ... ')
;

, где parameters (если вы использовали это предложение) ничего не говорят о «предложениях», вы получите ошибку если вы попробуете запрос выше - что-то вроде

DRG-10837: section sentence does not exist

Сначала вам нужно будет определить «специальные» секции для предложений:

begin 
  ctx_ddl.create_section_group('my_section_group', 'AUTO_SECTION_GROUP');
  ctx_ddl.add_special_section('my_section_group', 'SENTENCE');
end;
/

С этим в руке:

drop index ctxidx;

create index ctxidx on tbl(Paragraph)
indextype is ctxsys.context
parameters ('section group my_section_group')
;

Теперь вы готовы успешно выполнить запрос в верхней части этого ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...