【问题标题】:Full text database search and attachments on file system文件系统上的全文数据库搜索和附件
【发布时间】:2014-02-18 23:50:20
【问题描述】:

我已经使用 Symfony 2 框架开发了一个 php 应用程序,现在我想在我的应用程序中实现全文搜索,它是一个遵循基于用户的 acl 规则的业务应用程序等等。在我的应用程序中,我创建了文档,下面是更多详细信息:

  • 我在我的应用程序中使用表单数据创建文档并上传表单的附件部分

  • 当我保存文档时,表单数据保存在数据库表中,但附件保存在文件系统中(例如 pdf、.doc、.xls ...),对存储在文件系统保存在数据库记录中。

当有人搜索时,我的全文功能非常简单,我需要做的就是在表中搜索数据,我可以使用 SQL 搜索来实现,但我还需要搜索与文档关联的附件(表单数据) .有人可以建议我可以使用什么来实现搜索功能,或者如果有人有经验,是否可以提供一些链接或示例。谢谢。

【问题讨论】:

    标签: symfony symfony-2.1 symfony-2.3


    【解决方案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');
    

    这为我解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多