2011-10-07 80 views
0

這裏是我的問題:獅身人面像搜索:不包括指數指數B得成果

我有2個指標:

A - 產品僅標題 乙 - 產品名稱和產品說明

默認我搜索索引A來對產品進行分類(例如,大多數自行車在標題中都有「自行車」)。 有時會出現確定類別的實例(可能是某個子類別),我們需要查看描述,主要是爲了排除不相關的結果。爲了在搜索結果頁面上進行分頁工作,我需要在運行RunQueries()後將這個乾淨的結果作爲一個數組獲得。

但它不起作用。它基本上增加了兩個查詢的結果,看起來像沒有辦法減去結果。任何人有任何想法?

回答

0

告訴我,如果我完全失去了一些東西,但它的聲音,我喜歡你的努力包括與符合特定查詢並排除與匹配另一個查詢說明結果的產品標題的結果嗎?

如果是這樣的話,在我看來這有2個指標沒用了,你可以有兩種產品的名稱和說明一個索引,然後運行一個完整的文本搜索查詢這樣:

@title queryA @description -queryB 

您可以使用相同的查詢通過簡單地刪除 - 符號來搜索具有queryA標題和queryB描述的匹配項。

如果這是關閉的基礎我唯一能想到的做法是使用SphinxQL(我不熟悉任何庫,因爲支持所有不使用SphinxQL的庫將被逐步淘汰在遙遠的將來,我讀過)

使用SphinxQL你可以跑2個查詢,一個是像

SELECT id FROM indexB WHERE MATCH('@description queryB') 

然後運行使用您從有ID的列表中的第二個查詢第一個查詢爲

SELECT id FROM indexA WHERE id NOT IN(id1,id2,id3,...) 
+1

感謝威廉。 @title queryA @description -queryB是正確的。從查詢A的結果中刪除查詢B的結果。 我們沒有使用SphinxQL,只有一個PHP庫。沒有找到解決方法,所以不得不限制使用2個索引中的一個。稍後我可能會試用SphinxQL。 –