Ruby 如何上传文本文档,是否可以在其上启用全文搜索?

Ruby 如何上传文本文档,是否可以在其上启用全文搜索?,ruby,ruby-on-rails-3,pdf,full-text-search,jrubyonrails,Ruby,Ruby On Rails 3,Pdf,Full Text Search,Jrubyonrails,我正在使用以下技术: JRuby 1.7.4 轨道3.2.13 Ubuntu 13.04 DB2C-Express Torquebox服务器2.3.0 我的目标是制作一个简单的控制器,实现以下功能: 上载文本文件(MS Word格式、Open Office或Libre Office格式) 对上载的文件执行全文搜索 在浏览器中将文本文件显示为PDF 我一直在寻找可以帮助我实现这一目标的宝石,并提出以下问题: 存储文本文件的字段的列类型应该是什么。一般来说,我认为它应该是二进制类型 是否可以使用执行

我正在使用以下技术:

  • JRuby 1.7.4
  • 轨道3.2.13
  • Ubuntu 13.04
  • DB2C-Express
  • Torquebox服务器2.3.0
  • 我的目标是制作一个简单的控制器,实现以下功能:

  • 上载文本文件(MS Word格式、Open Office或Libre Office格式)
  • 对上载的文件执行全文搜索
  • 在浏览器中将文本文件显示为PDF
  • 我一直在寻找可以帮助我实现这一目标的宝石,并提出以下问题:

  • 存储文本文件的字段的列类型应该是什么。一般来说,我认为它应该是二进制类型
  • 是否可以使用执行全文搜索?正如我所读到的,它似乎适用于文本类型的字段,而不是二进制类型的字段
  • 我读了两个宝石,让我可以生成PDF。gem增加了更多的灵活性,并且可以从HTML页面生成pdf。是否可以使用其中任何一项来显示文本文件?我假设我应该首先以HTML的形式显示,然后使用PDF gem

  • 有人做过类似的事情吗?你能给我指出正确的方向吗?

    我从来没有做过你要求的大部分事情,但我使用的是一个将MS Word文档转换为XML文档的文本解析器。也许我至少可以让你从正确的方向开始

    我们使用一个名为的Java库,它使DOC->XML转换成为一个简单的过程。由于您使用的是JRuby,我想您可以更轻松地将它集成到您的项目中,因为我们使用的是MRI Ruby。这是一个PITA,因为为了能够使用.jar文件,我们必须包含很多桥和其他垃圾

    就我个人而言,我已经使用了处理文件上传。上传文件并将其附加到模型是一个简单的过程。您只需使用Carrierwave生成器生成一个附加到模型中某个字段的
    Uploader
    类,将其配置为根据您的规范存储和处理该文件,就可以了!这些文件很好,但是如果你需要的话,我很乐意帮助你。如果您需要上传多个文件,请在不同的SO帖子中


    希望有帮助

    要回答您的问题:

  • 我将使用两列,一个二进制(BLOB)来存储原始文档(MS Word或LibreOffice)。这将有助于将其翻译成PDF。然后是全文搜索的另一列;这将是文本类型,仅包含纯文本
  • 我不会使用gem进行全文搜索,我宁愿使用SQL'LIKE'关键字
  • 据我所知,虾是最好的。您还可以搜索是否有gem直接将MSWord转换为pdf或将Libreoffice文档转换为pdf
  • 最后,Libreoffice文本是简单的压缩档案,文本存储在XML文件中。要提取它,请执行以下操作:

    content = `unzip -cq \"#{file_path}\" content.xml`
    require 'nokogiri'
    @nokogiri = Nokogiri::XML(content)
    paragraphs = []
    @nokogiri.xpath('//text:p').each do |t|
        paragraphs << t.content
    end
    text = paragraphs.join ' '
    
    content=`unzip-cq\“{file\u path}\”content.xml`
    需要“nokogiri”
    @nokogiri=nokogiri::XML(内容)
    段落=[]
    @xpath('//text:p')。每个|
    
    您可能需要阅读的段落