текстовый поиск в Oracle

я создал таблицу

CREATE TABLE "SCOTT"."TEXTSEARCH" 
   (    "NAME" VARCHAR2(20 BYTE), 
    "RESUME" BLOB, 
    "TEXT" CLOB
   )

Я вставил значения, которые включают документ Word 2013, представляющий резюме. Текст резюме есть

Hi This Is My Resume  
Testing  
HTML  
999999

Затем я создал текстовый индекс

CREATE INDEX "SCOTT"."RESUMETEXTINDEX" ON "SCOTT"."TEXTSEARCH" ("RESUME") 
   INDEXTYPE IS "CTXSYS"."CONTEXT"  PARAMETERS ('LEXER ctxsys.basic_lexer');

Когда я запускаю запрос

select * from textsearch WHERE contains(resume, 'testing')> 0;

Я получаю результат, но когда я ищу слово «мой», я не получаю никаких результатов

select * from textsearch WHERE contains(resume, 'my')> 0;

ни

select * from textsearch WHERE contains(resume, 'My')> 0;

возвращать результаты


person Sam Mathew    schedule 08.04.2016    source источник


Ответы (1)


Индекс Oracle Text не индексирует общие слова, по которым пользователи не должны искать. Это так называемые стоп-слова. Я не знаю каждое слово в списке стоп-слов по умолчанию, который использует ваш индекс, но я ожидаю, что «мой» есть в этом списке.

Вы можете изменить список стоп-листов по умолчанию или создать свой собственный, но если вы действительно не хотите, чтобы пользователи могли запрашивать только слово «мой», что кажется маловероятным, я бы этого не сделал. В дополнение к уменьшению индекса (и ускорению поиска) стоп-слова делают поисковые фразы более удобными. Фраза «мое резюме» будет соответствовать «резюме Джона» или «резюме», если «мое» является стоп-словом, потому что стоп-слово соответствует любому слову. Для людей это, как правило, хорошо - большинство людей в большинстве случаев не хотят пропустить результат, потому что общий глагол в документе имел другое время (например, "is" vs "was").

См. раздел 4.1.5 Запрос стоп-слов в Руководстве разработчика текстовых приложений. для более подробной информации.

person Justin Cave    schedule 08.04.2016
comment
Могу ли я разрешить несколько символов, таких как - или / - person Sam Mathew; 08.04.2016