Lucene.Net。如何搜索HTML实体

时间:2012-10-03 12:51:15

标签: c# .net lucene lucene.net

如何在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%'

1 个答案:

答案 0 :(得分:3)

归结为如何存储它。当您存储文档时,您似乎正在存储HTML 搜索文档。

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

  • 一个存储原始HTML,但分析(没有必要搜索标记,是吗?)
  • 一个包含为搜索而处理的HTML。该字段存储,但 已分析。

为了填充第二个字段,您应该通过类似HTML Agility Pack的内容运行HTML以获取您正在存储/处理的HTML节点的内部文本,然后通过{{3}运行该文本获取HTML实体代表您可以实际分析和搜索的文本。

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

关于通配符搜索,它们受支持,您只需HttpUtility.HtmlDecode method(假设您使用的是QueryParser)。请注意,默认情况下不启用通配符前缀。