如何从网络批量导入文档

该页包括一个示例powershell脚本,该脚本将在文件夹结构中导航,并向它找到的所有文档添加链接以进行交互

❗️

这仅作为示例提供,虽然可以从Interact中搜索文档,但链接将不起作用,因为现代浏览器阻止使用file://协议链接到文档

你需要

  1. 交互内部网中的企业搜索记录。这方面的说明可以找到如何设置企业搜索
  2. 对机器上安装的PowerShell脚本和PowerShell软件有一些基本的了解
  3. 需要导入的文件必须在本地PC上可用,并且用户在单击搜索结果时可以在公司网络上使用

它是如何工作的

下面的脚本以以下方式工作

  • 为JSON请求设置交互模板

  • 循环遍历指定位置中的所有文件和子文件夹。然后,通过忽略以.db结尾或以~开头的文件来排除临时文件

  • 对于每个文件,脚本通过将标题、摘要和描述设置为文件名,并将作者设置为文件的原始创建者,来编译JSON数据以发送给Interact

  • 然后脚本将数据发送给交互,以便将文档添加到搜索索引中。

如何运行它

  • 该脚本有3个参数
    1. networkPath -包含文档的顶级文件夹的文件路径
    2. uncPath—到顶层文件夹的基于文件的URL,用于从交互搜索索引访问文档
    3. interactURI -您的Interact安装的url

将应用程序cd运行到脚本文件所在的文件夹中,并执行以下命令

/ NetworkFolders。ps1 -networkPath "<文件路径>" -uncPath "<网络路径>" -interactURI "<内网搜索应用>的URL

例如

/ NetworkFolders。ps1 -networkPath "C:\Files\" -uncPath "//REDCAR/ C $/Files" -interactURI "http://demo.interact.com/api/searchapp/1/document "

需要考虑的事项

如果您正在使用此脚本,则需要记住以下内容

  • 这不是交互式交互的官方支持,它是作为一个助手和例子,什么是可能的搜索应用程序
  • 没有错误检测或数据验证
  • 当以这种方式添加文件时,没有检查重复或删除文档的简单方法
  • 这只能作为批量导入工作,将新文件添加到文件系统中不会同时将它们添加到交互中
  • 你需要编辑脚本,以包括你自己的API密钥,这是在交互中设置搜索应用程序时添加的
  • 如果脚本正在运行,那么对于导入的每个文件,屏幕上都应该显示一条成功消息

这个脚本

在这儿……

参数([string] networkPath美元,uncPath美元[string], [string] interactURI美元)$ templateJSON = " {" Url ": " "文件:uncPath美元“+ +”/ {filepath}”“、”“Id”“:”“{Id}”“,”“标题”“:”“{文件名}”“,”“IsPublic”“:”“真”“,”“身体”“:”“{文件名}”“,”“总结”“:”“{文件名}”“,”“作者”“:”“{作者}”“}”[净。ServicePointManager]::SecurityProtocol = [Net. Net.]安全ProtocolType]::Tls12 $files = Get-ChildItem $networkPath -Recurse -File -exclude "*.db ~*" for ($i=0; $i -lt $files.Count; $i++) { if($files[$i].Length){ $urlPath = $files[$i].FullName $urlPath = $urlPath.Replace($networkPath, "") $urlPath = $urlPath.Replace("\", "/") $author = (Get-Acl $files[$i].FullName).Owner $author = $author.Split("\")[1] $fileJSON = $templateJSON $fileJSON = $fileJSON.Replace("{filename}", $files[$i].Name) $fileJSON = $fileJSON.Replace("{id}", $i) $fileJSON = $fileJSON.Replace("{filepath}", $urlPath) $fileJSON = $fileJSON.Replace("{author}", $author) Invoke-RestMethod -Uri $interactURI -Method Put -ContentType "application/json" -Headers @{'X-ApiKey'=''; } -Body $fileJSON } }

Baidu
map