1
我對solr模式設計有一些疑問。基本上我爲產品目錄網站設置了一個搜索引擎,我的表格關係如下。Solr Schema Design
Product
屬於Merchant
Product
屬於Brand
Product
具有屬於許多Categories
Category
有許多Sub Categories
Sub Category
有許多Types
Type
有許多Sub Types
到目前爲止,我的Schema.xml看起來像這樣。
<field name="product_id" type="string" indexed="true" stored="true" required="true" />
<field name="name" type="string" indexed="true" stored="true"/>
<field name="merchant" type="string" indexed="true" stored="true"/>
<field name="merchant_id" type="string" indexed="true" stored="true"/>
<field name="brand" type="string" indexed="true" stored="true"/>
<field name="brand_id" type="string" indexed="true" stored="true"/>
<field name="categories" type="string" multiValued="true" indexed="true" stored="true"/>
<field name="sub_categories" type="string" multiValued="true" indexed="true" stored="true"/>
<field name="types" type="string" multiValued="true" indexed="true" stored="true"/>
<field name="sub_types" type="string" multiValued="true" indexed="true" stored="true"/>
<field name="price" type="float" indexed="true" stored="true"/>
<field name="description" type="text" indexed="true" stored="true"/>
<field name="image" type="text" indexed="true" stored="true"/>
<field name="text" type="text" indexed="true" stored="false" multiValued="true"/>
<uniqueKey>product_id</uniqueKey>
<defaultSearchField>text</defaultSearchField>
<solrQueryParser defaultOperator="OR"/>
<copyField source="name" dest="text"/>
<copyField source="merchant" dest="text"/>
<copyField source="brand" dest="text"/>
<copyField source="categories" dest="text"/>
<copyField source="sub_categories" dest="text"/>
<copyField source="types" dest="text"/>
<copyField source="sub_types" dest="text"/>
所以我的問題,現在:
1)是架構是否正確?
2)假設我需要找到Category XYZ
的產品。我的高級程序員不喜歡通過Category Name
查詢solr,而不想使用CategoryID
。 他建議存儲CategoryID_CategoryName (1001_Category XYZ)
,並從網站上發送ID。 (假設帶有空格的名稱無法正常工作)。
所以要找到產品,那麼我應該做的categories
部分匹配,並從字符串識別類別ID即(fetch 1001 from 1001_Category XYZ)
或 如果我繼續categories
場和設置另一個字段的名稱爲category_ids
什麼?這對我來說似乎是更好的選擇。
或
是否有任何的solr多值字段類型來存儲CategoryID
和CategoryName
一起?
讓我知道你的想法,謝謝。
非常感謝你。 - 是的,我現在明白了,我不應該索引/存儲所有的字段。但是我們有一個計劃,不是從數據庫中獲取任何產品數據,而是從Solr讀取所有產品數據。由於這個原因,我們仍然需要Solr的每個領域。 – randika 2011-04-14 18:38:06