2012-10-03 91 views
1

如何在lucene.net中搜索html實體?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%' 

回答

3

歸結爲如何存儲它。當您存儲文檔時,看起來您正在存儲您的HTML 搜索。

我建議你有兩個不同的領域:

  • One將原始的HTML,但它是分析
  • 一個(有沒有必要在標記搜索,是嗎?)包含爲搜索處理的HTML。這個字段是而不是存儲的,但是它的分析。

爲了填充第二場,你應該通過類似HTML Agility Pack運行HTML讓你存儲的HTML節點/處理的內部文本,然後運行通過HttpUtility.HtmlDecode method文本,以獲得HTML實體代表您可以實際分析和搜索的文本。

然後,您可以在分析的字段上搜索任何想要的內容,而無需執行任何特殊操作,然後從存儲原始HTML的字段中檢索內容。

關於通配符搜索,它們受支持,您只需have to build your query appropriately(假設您使用的是QueryParser)。請注意,通配符前綴默認情況下未啓用。

+0

是的,非常好的主意,謝謝,其實我也有同樣的想法,但有一點不同,那就是從數據庫中獲取真實數據。 你可以幫助MultiFieldQueryParser嗎?這是非常有趣的,這種方法返回不是這樣的查詢(但不知道),正如我上面提到的。 MultiFieldQueryParser返回(標題:word1描述:word1)(標題:word2描述:word2)。現在我使用自己的查詢,但想用MultiFieldQueryParser – vlukham

+0

@majatu進行更新我已經更新了答案,以指示如何執行通配符搜索。請注意,通配符搜索通常非常緩慢,除非您專門構建索引來處理這些情況(這些索引非常大)。 – casperOne