2014-12-05 8 views
5

Я использую текст Oracle для поиска в своде предложений Я хочу скоринг быть как подсчет только отдельных вхождений,оракул текст definescore с Accum и запросов переписывания

Пример: Мой запрос является (dog cat table) Если это нашел термин «собака», он должен считать 1, даже если предложение имеет более одного «собачьего» термина. Если он нашел «собачий кот», он должен считать 2 ... и т. Д.

Я использовал этот запрос, но он дает мне 51, если он найдет два условия. Мне нужно аккумулировать дискретные вхождения. Поэтому я хочу переопределить поведение алгоритма подсчета Oracle Text.

select /*+ FIRST_ROWS(1)*/ sentence_id 
      ,score(1) as sc 
      , isn 
      ,sentence_length 
    from  plag_docsentences 
    where contains(PROCESSED_TEXT,'DEFINESCORE(dog, DISCRETE*.01) 
           ,DEFINESCORE(cat, DISCRETE*.01)' 
        ,1)>0 
order by score(1) desc 

ответ

1

ОК, я решил эту проблему.

Предположим, что я нахожу 2 термины из 3, оценка будет 67 , что означает (2/3 = 67), это поведение по умолчанию, выраженное в оракуле. так что я вывел уравнение, чтобы найти число вхождений (т.е. количество терминов в запросе, найденных в согриз предложении) следующим образом:

х/query_lenght = оценка/100

затем

х = query_lenght * оценка/100

это будет найти число совпадающих слов между запросом и запросом корпуса

Надеюсь, это поможет исследователям в ИК.

+0

но все же проблема, оценка никогда не 100%, любая идея? –

 Смежные вопросы

  • Нет связанных вопросов^_^