2009-07-20 8 views
0

私はpruposesを学ぶためのウェブサイトを構築しています。私はコンテンツをフルテキストインデクサとしてlucene.net を見ていますが、いくつか質問があります。初心者からLucene.net、複雑なクエリに最適ですか?

カテゴリの階層(nレベル)と1つのカテゴリ(1 cat - > n articles)に割り当てられた記事があります。 単純なRDBを使用すると、カテゴリまたはそのサブカテゴリの下で記事を検索するのが非常に簡単になります。しかし、私は ルーケンを使用してこの種のクエリーを構築する方法を想像しています。私が働くと思うオプション:

私はすべての記事の "タイトル、テキスト、カテゴリ"をideingしていますが、1つの選択肢はまずサブカテゴリのIDがすべてサブタイトル のリストを取得してから検索しますそのリストとluceneで。

その他のオプションは、luceneのフィールド内の記事のカテゴリー「パス」全体を索引付けすることです。 "title"、 "text"、 "catparent1、catparent2、catparent3、category"のようなもの?

複雑なリレーショナルフィルタでこのような種類のクエリを実行する場合、どのような方法が最適ですか? (だけでなく、テキスト検索)

答えて

4

インデックスフィールドとしてカテゴリのパスを追加し、それを検索するフレーズ検索を使用します。

ID  Title    Categories 

"MyDoc1", "Hello world!", "/programming/beginner/samples" 
"MyDoc2", "Prove that P=NP", "/programming/advanced/samples" 

今、あなたはフレーズ検索を使用していずれかの階層カテゴリを照会することができます

"samples" 

私はこれが満たさ使用:ワード検索を使用して

"/programming/beginner" 

か、階層的にファイル名にパス名を付けることができます。"dirname"または"parent/child"または"/root/parent/child"を検索すると、すべてうまく動作します。

スラッシュを含めたり除いたりすることで、検索をルートから開始するかどうかを制御できます。

「複雑なリレーショナルフィルタ」では、ブール検索を使用して、これらのカテゴリ検索を他の検索やフィルタと組み合わせることができます。

関連する問題