solr从索引中排除html类

时间:2015-08-31 10:47:50

标签: html indexing solr

我使用solr索引知识库。问题是,菜单也被编入索引,因此搜索菜单中使用的术语将返回所有页面 我能以某种方式告诉solr从索引中排除一个特殊的html类吗? HTML标签已删除,因此我无法在以后找到指定的元素。

修改
我为我想要实现的目标添加了一个简短的样本 也就是说,要将某些html节点(例如我的导航)排除在索引之外。

示例html:

<nav>
    <ul>
        <li>topic-1</li>
        <li>topic-2</li>
        <li>topic-3</li>
    </ul>
</nav>
<main>
    <h1>Topic-1</h1>
    <p>Lorem ipsum dolor sit ament...</p>
</main>

我目前从索引中获得的内容:

topic-1
topic-2
topic-3

Topic-1
lorem ipsum dolor sit ament...

我想在我的索引中得到什么:

Topic-1
lorem ipsum dolor sit ament...

3 个答案:

答案 0 :(得分:1)

你基本上想删除一些文字。您可以使用PatternReplace Character Filter在字段本身上执行此操作,该字段位于字段类型定义中的Tokenizer之前。这将保留在该字段的存储版本中。

或者,您可以在索引过程中更早地使用,并使用UpdateRequestProcessor在甚至查看索引之前修改该字段。你需要RegexReplace URP

答案 1 :(得分:0)

使用HTMLStripCharFilterFactory,它将删除HTML标记:

<analyzer>
  <charFilter class="solr.HTMLStripCharFilterFactory"/>
  <tokenizer class="solr.StandardTokenizerFactory"/>
</analyzer>

让我知道它是否适用于你。

在这里您可以找到更多相关信息。

https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.HTMLStripCharFilterFactory

答案 2 :(得分:0)

使用XPathEntityProcessor提取文档的子集,并与提供的XPath模式匹配。

通过这种方式,您可以索引页面中所需的实际内容(只要它是有效的XML),并忽略其他常见内容,例如页眉/页脚/等。同样。