我基本上要Solr的搜索多值字段的每個記錄我的搜索參數..我的例子閱讀:Solr中,如何對查詢進行不同的值集的一個字段的多值字段
我正在使用Solr來索引我的數據。我有與給定產品匹配的並行數組(以多值字段的形式)的應用程序數據。請看下面的例子,在品牌,型號和年份都多值字段:我使用的過濾器查詢(& FQ =),以縮小我的選擇
<-solr record start->
sku: 1234
make: acura, acura, acura
model: integra, rsx, rsx
year: 1997, 2004, 2000
engine: 3.4, 4.5, 4.5
<-solr record end->
。問題是,如果有人查找2000 Acura Integra,它將與上述記錄相匹配,但由於製造商,型號和年份數據是並行編碼的,因此實際上該產品沒有2000 Acura Integra。 Solr與make字段中的make,模型字段中的模型以及year字段中的年份(應該如此)匹配並返回此結果,而不尊重我的並行性。 我的查詢應該是這樣的,到目前爲止:
fq=make:"acura"&fq=model:"integra"&fq=year:2000 (I would normally escape URL characters when I POST to Solr, this is just an example)
所以我的解決方案是創建另一個多值字段,被稱爲總結領域,我會把所有的品牌,型號,年份和其他數據(如引擎)一起分隔空間。有必要在單詞旁邊添加引號,這樣多個單詞的術語不會無意中與搜索參數匹配。上面的例子,現在應該是這樣的:
<-solr record start->
sku: 1234
make: acura, acura, acura
model: integra, rsx, rsx
year: 1997, 2004, 2000
engine: 3.4, 4.5, 4.5
summary: "acura" "integra" "1997" "3.4", "acura" "rsx" "2004" "4.5", "acura" "rsx" "2000", "4.5"
<-solr record end->
我然後添加到我的查詢如下:
summary:(""acura" AND "integra" AND "2000")
我所期望的,如果我補充說,我的查詢,這記錄將不再出現,因爲在摘要字段中沒有acura integra 2000。但是,這並不奏效。記錄仍然出現。我很難過。有沒有人有解決這個問題的方法。這幾天一直在殺我。
我基本上想要Solr搜索我的搜索參數的多值字段的每個記錄..這可能嗎?有沒有更好的方法來做我想做的事情?
謝謝
嘿。這完全是我原來的解決方案,它完美的工作!唯一的問題是,當您轉到我的網站的產品屏幕時,您正在查看應用程序的數量而不是產品的數量。如果同一品牌,型號和年份屬於sku,並且只有引擎或子模型不同,我只是在產品下方的「適合」部分聲明。例如,我可能將4個應用程序一起拖放到我的網站上的1個產品「盒子」中。搜索結果應該說是查看1中的1,而是說查看4中的4(即使屏幕上有一個框)。因此,我的新架構... – Dan
@丹:看看領域崩潰:http://wiki.apache.org/solr/FieldCollapsing –
因爲問題是一個SKU(12345)可以適應多個車輛。每個SKU +車輛作爲自己的記錄都不錯,但將它們視爲客戶是非常可怕的。通過捲起每輛車(和應用程序)並將其附加到適合的相同SKU上,可以使其更易於觀看。不管怎樣,你可能每頁看10個應用程序,但你只有3個「盒子」,用戶可以在其中購買東西。所以它表示查看項目1到10,但只有3「盒子」與圖片和「點擊購買按鈕」列出。 – Dan