如何在SOLR中编制.html文件索引

Ana*_*tri 5 solr data-import full-text-indexing dataimporthandler solr4

我想要做索引的文件存储在服务器上(我不需要抓取)./ path/to/files /示例HTML文件是

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="product_id" content="11"/>
<meta name="assetid" content="10001"/>
<meta name="title" content="title of the article"/>
<meta name="type" content="0xyzb"/>
<meta name="category" content="article category"/>
<meta name="first" content="details of the article"/>

<h4>title of the article</h4>
<p class="link"><a href="#link">How cite the Article</a></p>
<p class="list">
  <span class="listterm">Length: </span>13 to 15 feet<br>
  <span class="listterm">Height to Top of Head: </span>up to 18 feet<br>
  <span class="listterm">Weight: </span>1,200 to 4,300 pounds<br>
  <span class="listterm">Diet: </span>leaves and branches of trees<br>
  <span class="listterm">Number of Young: </span>1<br>
  <span class="listterm">Home: </span>Sahara<br>

</p>
</p>
Run Code Online (Sandbox Code Playgroud)

我在solrconfing.xml文件中添加了请求处理程序.

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
  <str name="config">/path/to/data-config.xml</str>
</lst>
Run Code Online (Sandbox Code Playgroud)

我的data-config.xml看起来像这样

<dataConfig>
<dataSource type="FileDataSource" />
<document>
    <entity name="f" processor="FileListEntityProcessor" baseDir="/path/to html/files/" fileName=".*html" recursive="true" rootEntity="false" dataSource="null">
        <field column="plainText" name="text"/>
    </entity>
</document>
</dataConfig>
Run Code Online (Sandbox Code Playgroud)

我保留了默认的schema.xml文件,并将以下代码添加到schema.xml文件中.

 <field name="product_id" type="string" indexed="true" stored="true"/>
 <field name="assetid" type="string" indexed="true" stored="true" required="true" />
 <field name="title" type="string" indexed="true" stored="true"/>
 <field name="type" type="string" indexed="true" stored="true"/>
 <field name="category" type="string" indexed="true" stored="true"/>
 <field name="first" type="text_general" indexed="true" stored="true"/>

 <uniqueKey>assetid</uniqueKey>
Run Code Online (Sandbox Code Playgroud)

当我在设置它之后尝试进行完全导入时,它显示所有html文件都已获取.但是当我在SOLR中搜索时,它没有向我显示任何结果.任何人都知道可能的原因是什么?

我的理解是所有文件都正确获取但未在SOLR中编入索引.有谁知道如何在SOLR中索引那些元标记和HTML文件的内容?

您的回复将不胜感激.

Jay*_*dra 5

您可以使用Solr 提取请求处理程序向 Solr 提供 HTML 文件并从 html 文件中提取内容。例如在链接处

Solr使用Apache Tika从上传的html文件中提取内容

如果您想抓取网站并为其建立索引,Nutch 与 Solr 是一个更广泛的解决方案。
Nutch with Solr 教程将帮助您入门。


小智 0

您的意思是在 data-config.xml 中包含 fileName="*.html" 吗?您现在有 fileName=".*html"

我非常确定 Solr 不知道如何将元字段从 html 转换为索引字段。我没试过。

不过,我已经创建了读取 (x)html 的程序(使用 xpath)。这将创建一个格式化的 xml 文件以发送到 \update。此时,您应该能够使用 dataimporthandler 来查找格式化的 xml 文件。