2012-06-27 112 views
2

我們有一個大型餐廳菜單數據庫,用戶可以在其中搜索菜單項。有很多項目,當這些詞是並排的,它是一個獨特的菜,但這些詞很常見,並出現在各地。Solr同義詞不能正常工作

示例:用戶想要搜索「奶酪牛排」 在數據庫...它可以是「奶酪牛排」或「奶酪牛排」

在我的代名詞文件我有:

cheesesteak  => cheesesteak, cheese steak 
cheese steak => cheesesteak, cheese steak 

當我搜索「奶酪牛排」時,我會得到有效的結果。我得到了「奶酪牛排」和「奶酪牛排」(單詞並排)的菜單項

但是,當我搜索「奶酪牛排」,我得到各種不相關的結果,如「牛排沙拉配藍紋奶酪」它拿起任何與奶酪和牛排的話

有沒有辦法配置這個同義詞文件,所以它的作品?我不想強迫用戶輸入報價等。

回答

1

您正在尋找的是鄰近搜索,得分隨正確排序和詞的距離而改善。來自Solr FAQ

可以使用粗糙的短語查詢來完成鄰近搜索。這兩個術語越接近 出現在文檔中,分數 將會越高。粗言穢語的查詢指定了最大的「污點」,或者需要移動位數令牌以獲得匹配。

本示例爲標準請求處理程序會發現所有的文件 其中「蝙蝠俠」中的「電影」的100個字出現:

Q =文字:「蝙蝠俠電影」〜100

+0

謝謝mguymon ....但你如何設置在solr在某些短語的背景?普通大衆不會在搜索框中輸入〜100。他們只是打字奶酪牛排 – solrnewbie

+0

在搜索Solr之前,您必須將搜索範圍加上〜100。例如,我有一個網站是用戶提交搜索Sl Jo喬斯。搜索控制器將搜索調整爲「懶散的Joes」〜5並將其發送到Solr,獲取響應並將其呈現給用戶。 – mguymon

0

什麼你應該做的就是使用edismax,讓助推器顯示最相關的文檔。你也可以通過使用標準處理程序來做到這一點,如果你添加推動查詢或可選短語與所有條款如+cheese +steak ("cheesesteak"^100 "steak cheese"^50)