1

如何在 lucene.net 中搜索 html 实体?

我在数字 html 实体中的所有索引,所以如果我搜索例如“34”,它就会出现&#<b>34</b>;

同样非常有趣的是,如何像在 SQL 中一样使用不同的词在不同的字段中进行搜索。例如搜索短语“word1 word2”

SELECT * FROM table WHERE 
title LIKE 'word1%' OR title LIKE 'word2%' OR 
description LIKE'word1%' OR description LIKE 'word2%'
4

1 回答 1

3

这取决于你如何存储它。当您存储文档时,看起来您正在存储 HTML在其上进行搜索。

我建议您有两个单独的字段:

  • 一个存储原始 HTML,但对其进行分析(不需要在标记上搜索,是吗?)
  • 一个包含为搜索而处理的 HTML。该字段被存储,但分析。

为了填充第二个字段,您应该通过HTML Agility Pack之类的东西运行 HTML,以获取您正在存储/处理的 HTML 节点的内部文本,然后通过该HttpUtility.HtmlDecode方法运行该文本以获取 HTML实体表示您可以实际分析和搜索的实体。

然后,您可以在分析的字段中搜索您想要的任何内容,而无需执行任何特殊操作,然后从存储原始 HTML 的字段中检索内容。

关于通配符搜索,它们是受支持的,您只需要适当地构建您的查询(假设您使用的是 a QueryParser)。请注意,默认情况下不启用通配符前缀。

于 2012-10-03T13:08:47.813 回答