2009-07-20 19 views
0

我正在建立一個學習pruposes的網站,我正在看lucene.net 作爲我的內容的全文索引器,但我有一些問題。假設我有一個層次結構(n級)的類別,以及分配給一個類別的文章(1個cat - > n篇文章)。 使用簡單的RDB可以非常容易地搜索某個類別或其任何子類別下的文章。但我努力想要 想象如何使用lucene構建這種查詢。選擇我認爲可能的工作:Lucene.net的新手,最好的方法來解決複雜的查詢?

Suposing我是idexing「標題,文字,類別」的每一篇文章,其中一個方案是先獲取列表從DB的每個子類別 的ID的,然後搜索與lucene在列表中。

其他選項可能是在lucene中將字段的整個類別「路徑」編入索引。像「標題」,「文本」,「catparent1,catparent2,catparent3,類別」?

用複雜的關係過濾器進行這種查詢時,最好的辦法是什麼? (不僅僅是文本搜索)

回答

4

添加類路徑作爲索引字段,並使用詞組搜索來搜索它:

ID  Title    Categories 

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

現在你可以用短語搜索分層查詢類:

"/programming/beginner" 

或不分級使用詞搜索:

"samples" 

我用這個見面用它們的路徑名索引文件 - 你可以查詢"dirname""parent/child""/root/parent/child",它可以很好地工作。

您可以通過包含或不包含前導斜槓來控制搜索是否從根開始。

就「複雜關係過濾器」而言,您可以使用布爾查詢將這些類別搜索與其他搜索和過濾器結合使用。