2016-07-08 52 views
0

目前,如果我爲HOUSTON BOSTON ATLANTA GOOBER搜索一組107個索引的MLB時間表,並且沒有文檔包含GOOBER,則返回0個結果。確保並始終返回結果

有沒有辦法做一個搜索中,如果找不到的詞彙之一,那麼它會如果搜索是休斯敦波士頓亞特蘭大(有效地忽略落花生)返回結果?

我正在從Solr Web UI執行此操作。沒有什麼花哨。

後續工作:如果這不可能,我會從哪裏開始自行實施該功能?

回答

0

嗯,根據定義,AND總是會返回true,當且僅當所有條件都爲真。你不希望「確保AND總是返回結果」(我們不要違反布爾邏輯的長期約定,呃?),而是希望擁有應用程序邏輯來檢測AND查詢是否返回結果。如果是這樣,請發起備用查詢。或者更好的是,編寫你的布爾短語,這樣你就可以在一個查詢中做到這一點。 (並不總是可能的,但經常是這樣。)

聽起來像你需要使用OR。例如:HOUSTON OR BOSTON OR ATLANTA OR GOOBER。如果Goober不存在,那麼仍然可以找到與休斯頓,波士頓或亞特蘭大相關的任何信息。另一方面,如果Goober確實存在,Goober也會被發現。

如果您對查詢的用例更加具體,那麼我可能會在需要時進一步幫助您。

+0

感謝您的迴應!儘管5年前我已經有過使用PHP和PostgreSQL的經驗,但我對Solr和Java很陌生。 我同意使用OR會保證結果,並且會有比我需要的更多的結果,但是這些結果會以最高匹配數排在第一位嗎? 我猜如果我想做我想做的事情,我需要搜索休斯敦,拿這些結果並搜索波士頓等。 然後,如果子集搜索沒有返回結果(Goober),請繼續使用上一組搜索。 這可能會非常耗時...... –

+0

對搜索詞的引用更多的文檔應該更接近頂端。你究竟想要做什麼?如果您希望每個查詢只有少量(<25)個記錄,則幾個小的查詢一個接一個不會太糟糕。當然,你會想要大量加載測試。 – TMBT

+0

我有一個客戶想要實現一個永不失敗的AND搜索。這個例子是當它碰到一個丟失的單詞(GOOBER)時,那麼搜索不會失敗。它只是無視這個詞。 我的困惑是這是依賴於應用程序還是開發人員可以使用的新Solr搜索功能。 –