日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1.6.3 Uploading Data with Solr Cell using Apache Tika

發布時間:2025/3/20 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.6.3 Uploading Data with Solr Cell using Apache Tika 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. Uploading Data with Solr Cell using Apache Tika

  solr使用Apache Tika工程的代碼提供了一個框架,用于合并所有不同格式的文件解析器為solr自己的解析器,如Apache PDFBox,Apache POI.通過這個框架,solr使用ExtractingRequestHandler來上傳二進制文件.

  如果想要solr使用你自己的ContentHandler,你需要繼承ExtractingRequestHandler,重寫createFactory()方法.這個方法主要用于構建SolrContentHandler和Tika互動.并允許字面值來覆蓋Tika解析的值.設置參數literalsOverride,默認為true.為false的話,在Tika解析值的后面添加字面值.

  關于Solr 抽取請求的更多信息,參考?https://wiki.apache.org/solr/ExtractingRequestHandler

1.1 key的概念

  在使用Solr Cell時,了解一下信息對你是很有幫助的:

  • solr將會自動嘗試確定文檔類型(word,pdf,html),抽取恰當的內容.如果你想,你可以使用steam.type為tika指定一個明確的MIME類型.
  • Tika工作 生成一個XHTML流提供給SAX ContentHandler.SAX是一個許多不同XML解析器實現的通用接口.更多信息參考? .? http://www.saxproject.org/quickstart.html
  • solr然后響應Tika的SAX事件,創建字段到索引中.
  • solr生成元數據如title,subject,Author.參考?http://tika.apache.org/1.4/formats.html的文件類型支持部分.
  • solr抽取所有的文本到content字段.這個字段在schema.xml中定義為stored.
  • 可以映射solr的元數據到solr的字段中,也可以對這些字段加權.
  • 你可以為字段值傳入字面量值.字面量值將會覆蓋Tika解析的值,包含Tika元數據對象中的字段,Tika的內容字段,任何可以獲取的Tika 內容字段.
  • 可以使用XPath表達式到Tika的XHTML中,限制產生的內容.

  提示:盡管Apache Tika是很強大的,但是PDF文件是特別有問題的,這主要是由于在PDF格式本身.在處理任何文件時如果發生失敗,ExtractingRequestHandler不具有二手準備機制來抽取文件的文本,它將會拋出一個異常.

1.2 Trying out Tika with the Solr Example Directory

cd example -jar start.jar

  在新的命令行窗口,打開docs/目錄,通過?HTTP POST發送文件到solr中.

curl 'http://localhost:8983/solr/update/extract?literal.id=doc1&commit=true' -F "myfile=@tutorial.html"

  上面的URL調用了Extraction Request Handler,上傳了tutorial.html文件,定義了唯一主鍵id為doc1,-F標記說明使用Content-Type:multipart/form-data,并支持上傳二進制文件.@符號說明了上傳的文件附件.? myfile=@tutorial.html指定了一個有效的路徑.可以是絕對的也可以時相對的.(如myfile=@../../site/tutorial.html,如果仍舊在exampledocs目錄下的話.)

  也許已經注意到,在檢索的時候,雖然可以檢索文本的內容,但是看不到text的內容,這是因為Tika產生的?"content"字段映射到solr的"text"字段,solr的這個字段沒有存儲.這個操作可以通過? /update/extract 句柄的默認映射規則來改變.例如,存儲,并看到所有元數據和內容:

curl 'http://localhost:8983/solr/update/extract?literal.id=doc1&uprefix=attr_&fmap.content= attr_content&commit=true' -F "myfile=@tutorial.html"

  這個參數 uprefix=attr_使solr的schema.xml中所有沒有定義的字段前面都加上attr_字樣.attr_在schema.xml中作為一個動態存儲字段.fmap.content=attr_content參數覆蓋了默認的fmap.content=text.使content添加到了attr_content字段.

1.3 Input Parameters

?  ?Extraction Request Handler能夠接受的參數:

參數描述
boost.<fieldname>為指定字段加權
capture

捕獲指定的XHTML元素,支持添加到solr文檔中.這個參數在復制XHTML中的某一塊兒內容到指定字段時,非常有用.例如,它可以搜索<p>,索引它們到一個特別的字段.注意:content仍舊被抓取到整個"content"字段.

captureAttr索引Tika XHTML的屬性到單獨的字段.如果設置為true,例如,從HTML中抽取內容時,Tika可以返回<a>標簽元素中的href屬性作為"a"字段.參考下面例子.
commitWithin在指定毫秒時間內提交索引到磁盤
date.formats定義文檔識別的日期格式
defaultField如果uprefix參數沒有指定,字段不能被識別的時候,使用這個默認字段.
extractOnly

默認時false,如果為true,返回這個Tika抽取的內容,不索引這個文檔.這在響應中逐字的包含抽取的XHTML字符串.在手動查看時,相對于xml來說它可能是更有用.以避免查看更多的嵌入的XHTML標簽.參考http://wiki.apache.org/solr/TikaExtractOnlyExampleOutput.

extractFormat默認時"xml".另外一個格式是"text".-x 表示xml? -t 表示text格式.只有在extractOnly為true的時候,這個參數才會有效.
fmap.<source_field>source_field必須是輸入文檔的字段,它的值是需要映射到的solr的字段.例如 fmap.content=text使Tika生成的content字段內容移動到solr的text字段
literal.<fieldname>使用指定的值占據solr的字段.這個數據可以是多值的如果這個字段是多值類型的話.
?lowernames?(true/false).如果為true,所有字段都被映射為小寫帶有下劃線.例如:"Content-Type"被映射為"content_type"
?multipartUploadLimitInKB?在上傳大文件時很有用.定義允許文檔的KB大小.
?passwordsFile?Defines a file path and name for a file of file name to password mappings.
?resource.name?文件名,Tika可以使用這個文件名確定文件MIME類型.
?resource.password?PDF或者OOXML文件可能使用的密碼
?tika.config?定義了tika的配置文件.只有在你自定義實現Tika時才要求使用.
?uprefix?所有schema中沒有定義的字段使用的前綴匹配.聯合動態字段使用是非常有用的.例如uprefix=ignored_將有效忽略所有Tika產生的未知字段.schema中包含?<dynamicField name="ignored_*" type="ignored"/>.

?xpath

?在抽取時,只返回Tika XHTML中滿足xpath表示的內容.參考http://tika.apache.org/1.4/index.html了解更多?Tika XHTML的細節.同樣參考http://wiki.apache.org/solr/TikaExtractOnlyExampleOutput

?

1.4 Order of Operations

  這里是使用Solr Cell操作的順序,使用Extraction Request Handler 和Tika, 處理它的輸入.

  • Tika產生字段,傳入literal.<fieldname>=<value>中指定的字面量值給對應字段.如果literalsOverride=false,字面量值將最為多值添加在Tika產生的字段的值之后.
  • lowernames=true,字段映射為小寫.
  • 通過指定?parameters. fmap.source=target參數,Tika使用映射規則.
  • 如果指定uprefix,任何未知字段名前都要加上這個值,否則,如果指定defaultField,任何未知字段都復制到這個默認字段.
  • 1.5 配置solr ExtractingRequestHandler

      這是solrconfig.xml中ExtractingRequestHandler的配置例子:

    <requestHandler name="/update/extract"class="org.apache.solr.handler.extraction.ExtractingRequestHandler"><lst name="defaults"><str name="fmap.Last-Modified">last_modified</str><str name="uprefix">ignored_</str></lst><!--Optional. Specify a path to a tika configuration file. See the Tika docs for details. --><str name="tika.config">/my/path/to/tika.config</str><!-- Optional. Specify one or more date formats to parse. See DateUtil.DEFAULT_DATE_FORMATS for default date formats --><lst name="date.formats"><str>yyyy-MM-dd</str></lst> </requestHandler>

    ?

      date.formats允許指定多種java.text.SimpleDateFormats日期格式用于轉換抽取的輸入內容為日期格式.solr配置了下面的日期格式(參考solr的DateUtil):

      yyyy-MM-dd'T'HH:mm:ss'Z'
      yyyy-MM-dd'T'HH:mm:ss
      yyyy-MM-dd
      yyyy-MM-dd hh:mm:ss
      yyyy-MM-dd HH:mm:ss
      EEE MMM d hh:mm:ss z yyyy
      EEE, dd MMM yyyy HH:mm:ss zzz
      EEEE, dd-MMM-yy HH:mm:ss zzz
      EEE MMM d HH:mm:ss yyyy

      

      如果提交的文件比較大,使用下面限制:

    <requestDispatcher handleSelect="true" > <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="20480" /> ...

    ?

    1.6 Multi-Core Configuration

      對于多核配置,在solr.xml的<solr>元素部分指定sharedLib='lib'屬性,使solr能夠找到位于example/solr/lib中的jar包.

      關于solr 多核的更多信息,參考. The Well-Configured Solr Instance.

    1.7 Indexing Encrypted Documents with the ExtractingUpdateRequestHandler

      使用ExtracingUpdateRequestHandler索引加密文檔.

      如果solr在請求中提供resource.password或者提供文件passwordsFile來說明密碼的話,ExtractingRequestHandler將會解密加密文件.

      在passwordsFile的例子中,passwordsFile中每行指定一個加密規則.

    # This is a comment myFileName = myPassword .*\.docx$ = myWordPassword .*\.pdf$ = myPdfPassword

    ?

    1.8 例子

      1.8.1 Metadata

      正如之前提到的,Tika生成了文檔的元數據,元數據描述了文檔的不同的方面,如作者名字,頁數,文件大小等等.元數據的生成主要依賴于文件類型.例如PDFs具有和Word文檔不同的元數據.

      除了Tika的元數據以外,solr添加了一下的元數據 (在ExtractingMetadataConstants中定義):

    solr元數據描述
    stream_name這個Conent Stream的名字
    stream_source_info這個Conent Stream的源信息
    stream_size這個Conent Stream的字節大小
    stream_content_type這個Conent Stream的content type

    ?

    ?

    ?

    ?

    ?

    ?

      注意:我們推薦使用extractOnly選項,來發現為solr的元數據設置相應的值.

      1.8.2 Examples of Uploads Using the Extraction Request Handler

        1.8.2.1 Capture and Mapping

      捕獲 <div>標簽,映射這個字段的所有實例到動態字段foo_t中:

    curl "http://localhost:8983/solr/update/extract?literal.id=doc2&captureAttr=true&defaultFie ld=text&fmap.div=foo_t&capture=div" -F "tutorial=@tutorial.pdf"

    ?

        1.8.2.2 Capture, Mapping, and Boosting

      獲 <div>標簽,映射這個字段的所有實例到動態字段foo_t中,對字段加權為3.

    curl "http://localhost:8983/solr/update/extract?literal.id=doc3&captureAttr=true&defaultFie ld=text&capture=div&fmap.div=foo_t&boost.foo_t=3" -F "tutorial=@tutorial.pdf"

    ?

        1.8.2.3 Using Literals to Define Your Own Metadata

    curl "http://localhost:8983/solr/update/extract?literal.id=doc4&captureAttr=true&defaultFie ld=text&capture=div&fmap.div=foo_t&boost.foo_t=3&literal.blah_s=Bah" -F "tutorial=@tutorial.pdf"

    ?

        1.8.2.4 XPath

      下面例子中的XPath表達式是為了限制Tika返回的XHTML.

    curl "http://localhost:8983/solr/update/extract?literal.id=doc5&captureAttr=true&defaultFie ld=text&capture=div&fmap.div=foo_t&boost.foo_t=3&literal.id=id&xpath=/xhtml:html/xhtml :body/xhtml:div/descendant:node()" -F "tutorial=@tutorial.pdf"

    ?

     1.8.3 Extracting Data without Indexing It

      solr允許只抽取數據,不建立索引.如果你想用solr作為一個抽取服務或者是做抽取測試.可以通過設置extractOnly=true參數來完成.

    curl "http://localhost:8983/solr/update/extract?&extractOnly=true" --data-binary @tutorial.html -H 'Content-type:text/html'

    ?

      這個輸出包含了Tika生成的XML(and further escaped by Solr's XML);使用不同的輸出格式:

    curl "http://localhost:8983/solr/update/extract?&extractOnly=true&wt=ruby&indent=true" --data-binary @tutorial.html -H 'Content-type:text/html'

    ?

      1.8.4 Sending Documents to Solr with a POST

    curl "http://localhost:8983/solr/update/extract?literal.id=doc5&defaultField=text" --data-binary @tutorial.html -H 'Content-type:text/html'

    ?

      1.8.5 Sending Documents to Solr with Solr Cell and SolrJ

      solrJ是一個java客戶端,你可以添加文檔到索引中,更新索引,查詢索引.可以在 Client APIs中查找更多相關信息.

      這是一個使用?Solr Cell and SolrJ添加文檔的例子:

      首先,使用SolrJ創建一個SolrServer,然后構造一個包含ContentStream的請求(本質上時圍繞一個文件的封裝),然后發送給solr:

    public class SolrCellRequestDemo {public static void main (String[] args){color} throws IOException,SolrServerException {SolrServer server = new HttpSolrServer("http://localhost:8983/solr");ContentStreamUpdateRequest req = new ContentStreamUpdateRequest("/update/extract");req.addFile(new File("apache-solr/site/features.pdf"));req.setParam(ExtractingParams.EXTRACT_ONLY, "true");NamedList<Object> result = server.request(req);System.out.println("Result: " + result);}

    ?

    1.9 Related Topics

      ExtractingRequestHandler

    ?

    轉載于:https://www.cnblogs.com/a198720/p/4310563.html

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的1.6.3 Uploading Data with Solr Cell using Apache Tika的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 淫片在线 | 99青青草 | 在线观看欧美一区二区 | 国产一区二区三区在线看 | 久久资源在线 | 久久久久久国产精品无码 | 久久久一级黄色片 | 黄色小视频在线观看免费 | 久久成人久久 | 九色视频丨porny丨丝袜 | 在线观看免费av片 | 懂色av一区二区在线播放 | 午夜一区 | 免费一级淫片aaa片毛片a级 | 国产一二区在线观看 | 亚洲高清色 | 国产成人精品无码播放 | 粗大黑人巨茎大战欧美成人 | 国产精品视频久久久久久 | 深爱五月网 | 2018av在线| 香蕉毛片| 热播之家| 欧美色xxx | www.麻豆av | 日本黄色免费在线观看 | 日日碰日日操 | www国产视频 | 日本熟妇毛耸耸xxxxxx | 嫩草影院国产 | www.自拍| 最新av导航| 日韩女优网站 | 懂色av蜜臀av粉嫩av喷吹 | 天堂av资源在线观看 | 88xx成人永久免费观看 | 99精品福利| 国产吃瓜在线 | 久久成人18免费观看 | 亚洲精品高清在线 | 日韩一区二区影院 | 国产精品v欧美精品v日韩精品 | 精品在线视频一区二区 | 亚洲自拍偷拍网站 | 欧美国产日韩在线观看 | 狠狠干一区 | 韩国三级中文字幕hd久久精品 | 自拍视频一区二区 | 91污在线观看 | 日本三级全黄 | 亚洲福利在线视频 | 久草福利资源在线观看 | 日韩在线视频中文字幕 | 毛片的网站 | 97人人爽人人爽人人爽人人爽 | 18禁男女爽爽爽午夜网站免费 | 四虎综合网 | 日韩精美视频 | 2021av| 欧美操女人 | 亚洲欧美强伦一区二区 | 亚洲国产三区 | 可以免费看的av | 教练含着她的乳奶揉搓揉捏动态图 | 免费看美女被靠到爽的视频 | 一个色亚洲 | 欧美高清视频一区二区 | 伊人久久影视 | 丰满大肥婆肥奶大屁股 | 91日韩中文字幕 | 黄色福利| 亚洲欧美激情另类校园 | wwwxxoo| 夜夜噜噜噜 | 美女福利在线观看 | 午夜视频在线观看视频 | 亚洲区一区二区三区 | 亚洲另类xxxx | 亚洲性猛交xxxx乱大交 | 性色影院 | 四虎成人精品永久免费av | 亚洲AV无码成人精品国产一区 | 日韩精品三区 | 男人插入女人下面的视频 | 亚洲人精品午夜射精日韩 | 中国少妇无码专区 | 日韩免费片 | 福利视频一区 | 推特裸体gay猛交gay | 中文无码一区二区三区在线观看 | 成人激情站 | 黄色小视屏 | 亚洲成人高清 | 好色先生tv官网 | 亚洲五级片 | 国产精品欧美激情在线播放 | 爱爱爱爱网站 | 精品久久久久一区 | 亚洲第一网址 |