簡體   English   中英

使用solr / lucene索引原始HTML內容

[英]Index the Raw HTML content using solr/lucene

我有一些HTML,這些HTML是我在不同時間段從同一網站上抓取下來的。 原始數據看起來像這樣

timestamp, htmlcontent(500KB)
..

我已經編寫了一個解析器,以從HTML解析出一些有趣的字段,然后嘗試基於解析出的字段構建搜索引擎。 不只是基於HTML的原始文本,而是原始的完整HTML內容>

現在我的數據看起來像:

timestamp, htmlcontent, parsedfield1, parsedfield2

我希望用戶搜索時間戳,parsedfield1或parsedfield2,並且我的搜索引擎返回與用戶查詢相匹配的原始HTML並填充瀏覽器...因此感覺就像是搜索引擎的時光機:)

在這種情況下,我想知道如何設計索引? 我應該存儲哪些字段,哪些不存儲。 我正在閱讀《 Lucene in Action》這本書,想知道有人能幫助我如何解決這個問題。

根據我對Index的理解,schema.xml中有一些屬性... index是否? 是否存儲?...。我假設:“無論您想在查詢結果中包括什么,都應該存儲它。” ..在這種情況下,我必須存儲包含原始HTML的列...

由於該列是如此之大,因此一條記錄通常大約為數百KB ...只有幾百行..您可以輕松地獲得將近1GB的數據集...在solr中不起作用,我正在嘗試為這些索引使用Lucene的列,它遇到了heapsize問題。

這是另一個想法:也許我應該存儲parsedfield1,parsedfield2和指針...,其中point列是原始HTML文件的絕對路徑。 當然,在這種情況下,我需要將每個html存儲到本地/或HDFS上的單獨文件中...因此,當用戶搜索parsedfield1時,它將返回絕對路徑,然后我便檢索了這些文件...

我想我正在盡可能清楚地描述問題,想知道有人可以花一點時間給我一些指導性指導嗎?

非常感激!

一些准則 1.您需要XML或CSV或JSON格式的數據,我將為您提供xml示例
例如。-->您的數據為xml格式

<add>
    <doc>
        <field name="id">01</field>
        <field name="timestamp">somevalue</field>
        <field name="parsedfield1">your data 1</field>
        <field name="parsedfield2">Java data </field>
        <field name="htmlcontent">link to that html file</field>
    </doc>
</add>

2.您需要修改schema.xml

-每個文件應有一個唯一的ID
-根據您的需要,您只需要存儲htmlcontent的路徑
-其他字段僅用於搜索索引

 <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
 <field name="timestamp" type="text_general" indexed="true" stored="false" />
 <field name="parsedfield1" type="text_general" indexed="true" stored="false"/>
 <field name="parsedfield2" type="text_general" indexed="true" stored="false" />
 <field name="parsedfield2" type="text_general" indexed="true" stored="false" />
 <field name="htmlcontent" type="text_general" indexed="true"  stored="true" />


3.您可以使用post.jar將所有XML文件發布到solr,或者如果需要以編程方式使用SOLRJ API


**要存儲或不存儲的字段**
要在其上執行的字段僅搜索就不需要存儲,除非您要在結果中顯示它們

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM