Проблема с DerivationPlugin, который не применяется к QueryParser с использованием загруженной схемыPython

Программы на Python
Ответить
Anonymous
 Проблема с DerivationPlugin, который не применяется к QueryParser с использованием загруженной схемы

Сообщение Anonymous »

В следующем коде я пытаюсь добавить плагин к query_parser (

Код: Выделить всё

QueryParser). [b]Схема[/b] уже [b]индексирована[/b] и сохранена до запуска проекта. Однако у меня возникла проблема: DerivationPlugin
не применяется к query_parser при использовании self._schema.
  • Код: Выделить всё

    self._schema
    загружается из индекса во время инициализации.
  • Когда я создаю синтаксический анализатор с использованием self._schema, DerivationPlugin
    не применяется правильно во время синтаксического анализа.
  • Если я создам новую схему (

    Код: Выделить всё

    const_schema
    ) с теми же полями, что и self._schema, DerivationPlugin работает должным образом.
  • Однако, если я извлекаю поля strong> из self._schema и использовать их для создания
    новой схемы
    , DerivationPlugin по-прежнему не работает, хотя
    поля идентично.
Вот соответствующий фрагмент кода:

Код: Выделить всё

class BasicSearchEngine:
def __init__(self, qdocindex, query_parser, main_field):
self._docindex = qdocindex
self._schema = self._docindex.get_schema()
fields = {name: field for name, field in self._docindex.get_schema().items()}

const_fields = {
'a_g': NUMERIC(stored=True, unique=False),
'a_l': NUMERIC(stored=True, unique=False),
'a_w': NUMERIC(stored=True, unique=False),
}
const_schema = Schema(**const_fields)
print(const_schema.items() == self._schema.items())  # True

const_schema_fields = {name: field for name, field in const_schema.items()}
print(const_schema_fields == fields)  # True

self._parser = query_parser(main_field, self._schema, group=qparser.OrGroup)
self._parser.add_plugin(DerivationPlugin)
Почему DerivationPlugin не работает с парсером при использовании self._schema, но работает, когда вновь созданная схема используются, хотя поля идентичны? Как я могу решить эту проблему?


Подробнее здесь: https://stackoverflow.com/questions/792 ... ded-schema
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»