2010-10-22 37 views
0

我正在構建電子商務搜索,並且使用Lucene.Net作爲我的搜索引擎。不過,我無法篩選我的查詢。Lucene過濾器和「AND」運算符

這是我索引的文件之一,具有以下字段和值:
領域: 「名」,值: 「Mochila MVP」
領域: 「製造商」 ,值:「耐克附件」

現在,當我運行這些搜索我有如下因素的結果:

用戶輸入的查詢:
mochila^5耐克^ 2.5
的Lucene它翻譯爲:
(((名稱:mochil製造商:mochil)^ 5.0)((名稱:NIK製造商:NIK )^ 2.5))
結果:
帶來的產品 「Mochila MVP」

用戶輸入的查詢:
mochila^5和耐克^ 2.5
的Lucene它翻譯爲:
(+((名稱:mochil製造商:mochil)^ 5.0)+((名稱:NIK製造商:NIK)^ 2.5 ))
結果:
沒有結果

用戶輸入查詢:
mochila^5 +製造商:耐克
的Lucene它翻譯爲:
((名稱:mochil)^ 5.0)+製造商:耐克
結果:
沒有結果

我想知道的是爲什麼第二個和第三個查詢沒有帶來任何結果,因爲它們似乎與我的產品名稱和製造商匹配...

任何幫助都很高hly讚賞。提前致謝!

回答

0

有很多可能的原因,爲什麼你得到這樣[意外的]結果。這裏有什麼可以幫助你解決這個問題:

  • 你如何建立你的索引?
    • 分析儀問題
    • 哪些字段實際上被索引(分析)。我想這是廠商可能無法分析 - 注意,在所有的領域都表示你的第一個查詢的搜索(即充當像「所有」)
  • 採取Luke,看看有什麼是你的索引中
  • 還要注意的是,當你使用「和」或「+」這實際上意味着「和這些條款必須出現在這一領域」(即這樣的查詢比你的第一個嚴格)
+0

謝謝,在結束這個問題就像我建立我的索引一樣,就像你建議的那樣。最終爲我工作的是將索引標記化(分析),存儲和Term Vector(儘管我不知道這意味着什麼)。如果我改變那個配置它不起作用......但那就是它,謝謝! – 2010-11-18 16:44:14