2014-02-07 4 views
0

Я разработал приложение php с использованием платформы Symfony 2, теперь я хочу реализовать полный текстовый поиск в своем приложении, его бизнес-приложение, следуя правилам acl на основе пользователей и т. Д. В моем приложении я создаю документы, ниже немного больше деталей:Поиск в текстовой базе данных и вложения в файловой системе

  • Я создаю документы в моем приложении, используя данные формы и загрузку вложения части формы

  • Когда я сохранить документ, данные форм сохраненные в таблице базы данных, но вложения сохраняются в файловой системе (например, pdf, .doc, .xls ...), ссылка на файл, который хранится в файловой системе, хранится в записи базы данных.

Моя функциональность для полного текста очень просто, когда кто-то делает поиск все, что нужно сделать, это поиск данных в таблицах, которые я могу достичь с помощью поиска SQL, но мне также нужно искать вложения, которые связаны с документами (данные формы). Может кто-нибудь, пожалуйста, предложите, что я могу использовать для достижения возможности поиска, или если у кого-то есть опыт, если они могут предоставить некоторые ссылки или образцы. Thnx.

ответ

1

Я был в состоянии решить эту проблему с помощью следующих, первым создал отображение в config.yml, как показано

# Elastica Configuration 
fos_elastica: 
    clients: 
     default: { host: localhost, port: 9200 } 
    indexes: 
     website: 
      client: default 
      index_name: docova 
      types: 
       documents: 
        mappings: 
         Doc_Title: ~ 
         Description: ~ 
         Attachments: 
          type: "object" 
          properties: 
           File_Name: 
           content: 
           type: attachment 
        persistence: 
         driver: orm 
         model: Docova\DocovaBundle\Entity\Documents 
         provider: ~ 
         listener: ~ 
         finder: ~ 

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

return file_get_contents($this->file_path . DIRECTORY_SEPARATOR . $this->getDocument()->getId() . DIRECTORY_SEPARATOR . md5($this->File_Name), 'r'); 

Это решило его для меня.

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