2012-12-03 152 views
2

我試圖Lucene.net用於應用全文檢索表/實體Lucene.net文檔索引,並能與helpof使用這個鏈接 http://www.codeproject.com/Articles/320219/Lucene-Net-ultra-fast-search-for-MVC-or-WebForms創建具有一對多的關係

,但它有一個僅用於一些簡單數據的示例

雖然即時消息有兩個實體與一對多關係鏈接的情況。

class Product 
{ 
    public int Id{get;set;} 
    public int Name{get;set;} 
} 

class Shop 
{ 
    public int Id{get;set;} 
    public int Name{get;set;} 
    public List<Product> Products{get;set;} 
} 

現在正在實現/(將其存儲在索引中作爲單個表或文檔),這有點棘手。

我應該爲索引創建兩個文檔嗎?

但如果在Product中進行搜索,則鏈接將會出現問題,並且它將返回結果只有Product而不是商店。

出路是什麼?或者其他方式?

- 編輯---

需要存儲這些1:N相關的數據單獨的文件中,我將讓任何來自兩個實體領域的搜索。

所以即使在lucene返回結果之後,它也有可用於兩個實體的id。

回答

2

一種選擇是在索引中爲每個產品文檔創建一個字段,該字段包含所有商店ID。

文件(產品)

Name    | Shop 
------------------------ 
Super Product XY | 1 5 7 

現在,如果你只是想在一個車間進行搜索,你可以做這樣的事情。

+Name:"Super Product" +Shop:5 

一般來說,它絕對取決於您的要求。您是否需要搜索所有商店並找出哪家商店提供產品,或者您想將搜索範圍限制爲單個商店還是多家商店?

===更新===

如果你想收到的產品ID和ShopID您可以定義字段的ProductID和ShopID 「場:: STORE_YES」(C++變,我不知道.NET的定義)。

(STORE_YES)|(INDEXED_TOKENIZED)| (STORE_YES) 
ProductID | Name    | ShopID 
-------------------------------------- 
1   | Super Product XY | 1 5 7 
2   | Not good Product | 2 5 6 
-------------------------------------- 

從發現Document對象,你可以閱讀領域的ProductIDShopID,它給你所有你需要的。 ShopID將以字符串形式返回,您可以按空格(「」)拆分它,並且您有一組ShopID。

+0

也許編輯會讓我的問題變得清晰 – RohitWagh

+0

啊我剛剛看到商店確實有一個名字。所以你想把商店的名字加入搜索? – mfreiholz

+0

是的,店鋪的名字也會被儲存。並且用戶可以選擇僅檢查「商店」和「產品」或兩者中的任何一個 – RohitWagh

相關問題