1

lucene.netでhtmlエンティティを検索する方法は?

すべてのインデックスは数値のhtmlエンティティであるため、たとえば「34」を検索すると、次のようになります。&#<b>34</b>;

また、SQLのように、さまざまな単語を使用してさまざまなフィールドを検索する方法も非常に興味深いものです。たとえば、検索フレーズ「word1word2」

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

1 に答える 1

3

それはあなたがそれをどのように保管するかにかかっています。ドキュメントを保存すると、HTML保存して検索しているように見えます。

2つの別々のフィールドを用意することをお勧めします。

  • 生のHTMLを保存しますが、分析されません(マークアップを検索する必要はありませんか?)
  • 1つには、検索用に処理されるHTMLが含まれています。このフィールドは保存されません、分析されます。

2番目のフィールドにデータを入力するには、HTML Agility PackなどでHTMLを実行して、保存/処理しているHTMLノードの内部テキストを取得してから、そのテキストをHttpUtility.HtmlDecodeメソッドで実行して、HTMLのテキストを取得する必要があります。エンティティは、実際に分析および検索できるエンティティを表します。

次に、特別なことを何もせずに分析されたフィールドで必要なものを検索し、生のHTMLを格納するフィールドからコンテンツを取得できます。

ワイルドカード検索に関しては、サポートされています。クエリを適切に作成する必要があります(を使用していると仮定しますQueryParser)。ワイルドカードプレフィックスはデフォルトでは有効になっていないことに注意してください。

于 2012-10-03T13:08:47.813 に答える