CONTAINS не работает с Oracle Text
У меня возникла проблема с выполнением этого запроса.
После некоторого googling я разобрал эту проблему в индексе, но когда я посмотрел на таблицу и индекс, мне показалось, что это нормально.
Создать script для индекса выглядит следующим образом
Единственное, что мне странно, это то, что когда я смотрю на «Редактировать таблицу в свойствах таблицы в SQL Developer», я вижу, что «Операционный статус индекса» FAILED. Кто-нибудь знает, что это значит? Возможно, права БД?
Также он работает, когда я использую
Спасибо за любой совет
UPDATE
После воссоздания индекса и некоторых игр, я отключил, что могу выполнить запрос выше, но он ничего мне не вернет.
Если я попробую с помощью CONTAINS(gob_a_document, ‘%’) , результат будет 26 строк и не знаю, по какому ключу был выбран запрос (по крайней мере, я не нашел ничего очевидного, я исследую его больше). Проблема может заключаться в том, что мы используем Oracle 10g и сохраняем файлы DOCX, поддерживаемые с версии 11.
«Операционный статус индекса FAILED»
Хорошо, это означает, что ваш оператор CREATE INDEX не удался. Вы получили сообщение об ошибке? Думаю, ответ да, но вы его пропустили. Итак, что вам нужно сделать:
- удалить индекс
заново запустите оператор CREATE INDEX
если он выдает ошибку, запомните причину и исправьте ее
Если это не очевидно, другой оператор работает, потому что он не пытается использовать ваш индекс CONTEXT. Это делает поиск трудным путем.
«Дело в том, что индекс уже был создан в БД»,
Не было реального, чтобы индекс не смог создать должным образом, следовательно, его статус. Вы могли бы просто перестроить индекс, но обычно лучше сначала исправить основную причину сбоя. Вот почему я посоветовал вам бросить и воссоздать. Очевидно, что первоначальный сбой произошел из-за какого-то внешнего условия, которое больше не применяется.
«Теперь запрос выполняется, но он не дает мне никаких результатов (0 строк возвращается). (и я уверен, что он должен вернуться как 100 строк)
Итак, похоже, что вы храните документы в двоичном формате. Какие документы? Являются ли они в поддерживаемом формате? Это будет зависеть от того, какую версию Oracle вы используете. Например, Oracle Text 10g поддерживает до Word 2003 (то есть только DOC), тогда как Oracle Text 11g поддерживает Word 2007 (например, DOCX).
Источник
CONTAINS не работает с Oracle Text
У меня возникла проблема с выполнением этого запроса.
После некоторого googling я разобрал эту проблему в индексе, но когда я посмотрел на таблицу и индекс, мне показалось, что это нормально.
Создать скрипт для индекса выглядит так:
Единственное, что мне странно, это то, что когда я смотрю на «Редактировать таблицу в свойствах таблицы в SQL Developer», я вижу, что «Операционный статус индекса» FAILED. Кто-нибудь знает, что это значит? Возможно, права БД?
Также он работает, когда я использую
Спасибо за любой совет
PS Это связано с моим предыдущим вопросом: производительность Oracle DBMS_LOB.INSTR и CONTAINS
ОБНОВИТЬ
После воссоздания индекса и некоторых игр, я разобрался, что могу выполнить запрос выше, но он ничего мне не вернет.
Если я попробую его с CONTAINS(gob_a_document, ‘%’) , результат будет 26 строк и не знает, по какому ключу был выбран запрос (по крайней мере, я не нашел ничего очевидного, я буду исследовать его больше). Проблема может заключаться в том, что мы используем Oracle 10g и сохраняем файлы DOCX, которые поддерживаются с версии 11.
«Операционный статус индекса недействителен»
Хорошо, это означает, что ваша инструкция CREATE INDEX не удалась. Вы получили сообщение об ошибке? Думаю, ответ да, но вы его пропустили. Итак, что вам нужно сделать:
- отбросить индекс
- перезапустить оператор CREATE INDEX
- если он выдает ошибку, запишите причину и исправьте ее
Если это не очевидно, другой оператор работает, потому что он не пытается использовать ваш индекс CONTEXT. Это делает поиск трудным путем.
«Дело в том, что индекс уже был создан в БД»,
Ничего особенного в том, что индекс не смог создать должным образом, следовательно, его статус. Вы могли бы просто перестроить индекс, но обычно лучше сначала исправить основную причину сбоя. Вот почему я посоветовал вам бросить и воссоздать. Очевидно, что первоначальный сбой произошел из-за какого-то условия окружающей среды, которое больше не применяется.
«Теперь запрос выполняется, но он не дает мне никаких результатов (0 строк возвращено). (И я уверен, что он должен возвратиться как 100 строк)»
Таким образом, похоже, что вы храните документы в двоичном формате. Какие документы? Являются ли они в поддерживаемом формате? Это будет зависеть от того, какую версию Oracle вы используете. Например, Oracle Text 10g поддерживает до Word 2003 (то есть только DOC), тогда как Oracle Text 11g поддерживает Word 2007 (например, DOCX) .
Источник
Oracle Contains не работает
У меня есть столбец в моей таблице, который индексируется контекстом.
И я пытаюсь выполнить запрос с условием where
и он возвращает строки.
Однако когда я пытаюсь выполнить запрос с условием where
и он не возвращает никаких строк.
Может ли кто-нибудь сказать мне, пожалуйста, почему like работает, а contains-нет?
2 ответа
Возникли проблемы с использованием Contains при создании запросов. Попробовал поискать его на oracle docs, но все, что я пробовал, продолжает давать мне ошибку. Вопрос заключается в следующем: перечислите все столбцы таблицы Product, которые содержат слова Ink Jet’ в названии продукта Мой код.
Я использую Oracle Text для поиска в своем веб-приложении. Я настроил Oracle Text, создав хранилище данных и индекс. Это мой запрос select * from PROFILE where CONTAINS(FIRST_NAME,:firstName OR :secondName,1)>0; Каждый раз, когда я получаю следующее исключение ORA-00907: missing right.
Две возможные причины — индекс может быть не синхронизирован, и CONTAINS , по-видимому, соответствует словам, в то время как LIKE соответствует строкам.
Пример двух строк, где LIKE соответствует обеим, но CONTAINS не соответствует ни одной:
По умолчанию индексы CONTEXT необходимо синхронизировать вручную . Вам нужно либо запустить: exec ctx_ddl.sync_index(‘cidx_mustfixby’); , либо создать индекс с on commit .
Это устраняет одну из проблем. Но Q234567 все еще не соответствует. Я не очень много знаю о тексте Oracle, и я даже не могу найти простое описание того, как работает CONTAINS . Но, похоже, он основан на полных словах, а не на строках. Должна быть какая-то граница слова между Q2 и другими символами, чтобы он был подобран простым фильтром CONTAINS .
Вам также необходимо добавить % при использовании CONTAINS.
Похожие вопросы:
Итак, у меня есть эта таблица с полнотекстовым индексированным столбцом value. Это поле содержит в себе несколько числовых строк, которые корректно возвращаются, когда я использую такой запрос.
Я хотел бы использовать запрос в LINQ и использовать функцию, которая работает как LIKE в TSQL. Например: SELECT salary FROM employees WHERE last_name LIKE ‘R%’; Я пытаюсь сделать запрос в LINQ к.
У меня возникла проблема с выполнением этого запроса. SELECT * FROM gob_attachment WHERE CONTAINS (gob_a_document, ‘java’) > 0 Это дает мне ORA-29902: error in executing ODCIIndexStart() routine.
Возникли проблемы с использованием Contains при создании запросов. Попробовал поискать его на oracle docs, но все, что я пробовал, продолжает давать мне ошибку. Вопрос заключается в следующем.
Я использую Oracle Text для поиска в своем веб-приложении. Я настроил Oracle Text, создав хранилище данных и индекс. Это мой запрос select * from PROFILE where CONTAINS(FIRST_NAME,:firstName OR.
Мне нужно было использовать функцию Oracle 11g Contains() для поиска точного текста, содержащегося в некотором поле, введенном пользователем. Меня попросили не использовать оператор ‘like’. Согласно.
Информация о БД: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 — 64bit Production PL/SQL Release 11.2.0.3.0 — Production CORE 11.2.0.3.0 Production TNS for Linux: Version 11.2.0.3.0 -.
У меня есть веб-служба в Java, которая выполняет поиск в базе данных Oracle 12c. Проблема в том, что у меня есть поиск CONTAINS() : String query = select * from sys.my_table WHERE.
Я разрабатываю приложение на Oracle Apex с полнотекстовым поиском по таблице по Oracle тексту. Приложение имеет такой запрос: select task_id, . from vhd_tasks where contains(hw_sn, :P5)>0 В.
Источник
Oracle Text: CONTAINS не возвращает никаких значений, даже если они существуют в индексе
Я очень новичок в Oracle, и я создал базовое приложение, которое использует Oracle Text для выполнения текстового поиска по индексу.
Моя структура таблицы выглядит следующим образом:
Тогда мое описание полей есть индекс, присвоенный против него:
Я проверил в SQLDeveloper, что INDEX существует под моей вкладкой индекса, однако, когда я запускаю запрос, возвращаемые результаты всегда null, даже когда я ясно вижу, что данные в любой заданной строке соответствуют входной строке.
Давайте описание:
пусть описание B :
Пусть запрос :
Я ожидал бы, что результат запроса вернет описание A, однако никаких результатов нет returned. what я делаю здесь что-то не так?
2 ответа
Я пытаюсь использовать предложение WITH в Oracle, но оно не возвращает никаких данных. Это запрос, который я пытаюсь выполнить. with test as (select count(*) from my_table) select * from test; Когда я запускаю этот код, я получаю обратно количество записей в my_table select count(*) from.
Привет, у меня есть следующая структура таблицы. Professor (EMP ID,Name,Status,Salary,Age) Course(Course ID,Course Name,Points) Works(Course ID,EMP ID,Class ID) Мне нужно сделать следующее. Возвратный список сотрудников, прошедших 2 разных курса M1 и M2 для одного и того же класса класс 10 Это.
Для будущих пользователей, столкнувшихся с подобной проблемой.
SQLDeveloper каким-то образом аннулировал мой INDEX, я просто перешел на вкладку INDEX, щелкнул правой кнопкой мыши и выбрал «Rebuild». Это повторно подтвердило INDEX, и теперь код работает так, как ожидалось.
Вы можете указать, когда полнотекстовый индекс будет обновляться системой DB, используя синтаксис «Parameters» с оператором «Create index». Например, следующая инструкция создает полнотекстовый индекс, который обновляется после каждой фиксации(коммита).
См. Документы oracle для всех возможных вариантов «SYNC»
Похожие вопросы:
Итак, у меня есть эта таблица с полнотекстовым индексированным столбцом value. Это поле содержит в себе несколько числовых строк, которые корректно возвращаются, когда я использую такой запрос.
Я пытаюсь обновить поиск на своем сайте. Я наткнулся на CONTAINS. Я установил столбцы, которые хочу найти, в FULLTEXT. Что я упускаю? title = Test is what i’m doing SELECT * FROM test WHERE title.
У меня возникла проблема с выполнением этого запроса. SELECT * FROM gob_attachment WHERE CONTAINS (gob_a_document, ‘java’) > 0 Это дает мне ORA-29902: error in executing ODCIIndexStart() routine.
Я пытаюсь использовать предложение WITH в Oracle, но оно не возвращает никаких данных. Это запрос, который я пытаюсь выполнить. with test as (select count(*) from my_table) select * from test;.
Привет, у меня есть следующая структура таблицы. Professor (EMP ID,Name,Status,Salary,Age) Course(Course ID,Course Name,Points) Works(Course ID,EMP ID,Class ID) Мне нужно сделать следующее.
Я запрашиваю номера деталей из базы данных Oracle (JDE). Если я использую предложение WHERE Item LIKE ‘AS-%’ , оно правильно возвращает все элементы, начинающиеся с ‘AS-‘. Однако, когда я пытаюсь.
Как лучше всего установить значения, если они еще не существуют в PHP? Безопасно ли его использовать $color = $option[‘color’] ?: ‘blue’; Вместо $color = isset($option[‘color’]) ? $option[‘color’] .
У меня есть следующий запрос, который объединяет два меньших запроса: SELECT ‘Static 1’ type, somefield, some_id FROM (SELECT some_id, somefield FROM sometable WHERE someothercolumn = ‘Static 1’ and.
Как я могу объединить столбец и подвыборку, даже если этот подвыбор не возвращает никаких результатов? В приведенном ниже немом примере, когда подвыборка не возвращает никаких результатов, результат.
У меня есть база данных mongo с 3 коллекциями для 3 различных типов пользователей,таких как пользователь,партнер, администратор. Всякий раз, когда новый пользователь любого типа регистрируется, я.
Источник
CONTAINS не работает с Oracle Text
У меня возникла проблема с выполнением этого запроса.
После некоторого googling я разобрал эту проблему в индексе, но когда я посмотрел на таблицу и индекс, мне показалось, что это нормально.
Создать скрипт для индекса выглядит так:
Единственное, что мне странно, это то, что когда я смотрю на «Редактировать таблицу в свойствах таблицы в SQL Developer», я вижу, что «Операционный статус индекса» FAILED. Кто-нибудь знает, что это значит? Возможно, права БД?
Также он работает, когда я использую
instead of contains
Спасибо за любой совет
После воссоздания индекса и некоторых игр, я разобрался, что могу выполнить запрос выше, но он ничего мне не вернет.
Если я попробую его с помощью CONTAINS (gob_a_document, ‘%’) , результат будет 26 строк и не знает, по какому ключу был выбран запрос (по крайней мере, я не нашел ничего очевидного, я я исследую его больше). Проблема может заключаться в том, что мы используем Oracle 10g и сохраняем файлы DOCX, которые поддерживаются с версии 11.
«Операционный статус индекса FAILED»
Хорошо, это означает, что ваша инструкция CREATE INDEX не удалась. Вы получили сообщение об ошибке? Думаю, ответ да, но вы его пропустили. Итак, что вам нужно сделать:
- удалить индекс
- заново запустите оператор CREATE INDEX
- , если он выдает ошибку, запомните причину и исправьте ее
Если это не очевидно, другой оператор работает, потому что он не пытается использовать ваш индекс CONTEXT. Это делает поиск трудным путем.
«Дело в том, что индекс уже был создан в БД»,
Не было реального, чтобы индекс не смог правильно создать , следовательно, его статус. Вы могли бы просто перестроить индекс, но обычно лучше сначала исправить основную причину сбоя. Вот почему я посоветовал вам бросить и воссоздать. Очевидно, что первоначальный сбой произошел из-за какого-то условия окружающей среды, которое больше не применяется.
«Теперь запрос выполняется, но он не дает мне никаких результатов (0 строк возвращается). (и я уверен, что он должен вернуться как 100 строк)
Таким образом, похоже, что вы храните документы в двоичном формате. Какие документы? Являются ли они в поддерживаемом формате? Это будет зависеть от того, какую версию Oracle вы используете. Например, Oracle Текст 10g поддерживает до Word 2003 (т. Е. Только DOC) , тогда как Oracle Text 11g поддерживает Word 2007 (например, DOCX) .
Источник