【问题标题】:Lucene Indexing multiple documentsLucene 索引多个文档
【发布时间】:2011-01-17 08:34:44
【问题描述】:

我有这样的数据可用性,数据库中存储的数据很少,其他的则以pdf / word / excel文档的形式上传到文件服务器中。 如果我希望对以上所有内容进行索引,Lucene 索引应该如何?表和文档的索引应该不同吗?这样搜索字符串会沿着索引搜索或组合成具有各种字段结构的单个索引(lucene 支持吗?)?

谢谢 V

【问题讨论】:

  • 您要对数据库中的文档和文件服务器上的文档进行区分吗?
  • 是的,它们是不同的,数据库包含的字段很少,但文档文本(pdf/word)将被索引。
  • 好吧,如果我想要你可以使用一个索引,并通过一个字段分隔这两种类型的文档(就像我在答案中描述的那样)。您可以从索引文档的位置检查。然后您可以根据具体情况填写字段。稍后在应用程序中,您可以检查该字段,并仅使用您要使用的索引中的文档:)

标签: lucene


【解决方案1】:

如果您不想在文档之间产生差异,您可以使用一个索引。您可以使用 filesysteminfo 浏览文件夹的结构。使用 filesysteminfo 您可以检查它是文件夹还是文档,如果是文档,则对其进行索引,如果不是,则再次调用该函数。

Dim filesysteminfo As FileSystemInfo

        Dim FSIs As FileSystemInfo() = New DirectoryInfo(yourfolderroot).GetFileSystemInfos 

        For Each filesysteminfo In FSIs

            If TypeOf filesysteminfo Is DirectoryInfo Then

                function_create_document(filesysteminfo.FullName, indexwriter, id)

            Else


                Dim dynamic_doc As New Document()

               Dim sr As System.IO.StreamReader = New StreamReader(filesysteminfo.FullName)

                Dim filename As String = filesysteminfo.Name 


                          ...

如果您想有所作为,您可以检查您是从数据库还是从文件服务器获取文档。 只需将您的信息存储在一个字段中即可。

如果您的文档来自数据库,则使用字符串变量(您的字符串)您的字符串是“数据库”,否则它是“文件服务器”

Dim field_typ As Field = New Field("doc_typ", yourstring, Field.Store.YES, Field.Index.TOKENIZED)

【讨论】:

    猜你喜欢
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    相关资源
    最近更新 更多