2013-10-18 91 views
2

我在我的webapp上使用solr作爲搜索功能。我在每個用戶的搜索結尾添加一個「*」。所以,如果搜索是:foo我改爲filename:foo*Solr字段搜索,通配符和轉義字符

這工作正常,除了經常連字符將被包括在用戶的搜索。搜索filename:foo-bar*將返回零結果,因爲連字符將刪除搜索詞後面的所有搜索結果。我可以逃避它,因爲filename:foo\-bar*但我仍然得到零結果。如果我嘗試filename:foo"-"*,搜索將返回所有文檔。

關於如何讓-*與對方玩好?

感謝您的幫助

+0

嘗試從_text_類型切換到** solr.StrField **類型,併發出'filename:foo-bar *'搜索。 – rchukh

+1

解決了帖子中的問題。但是,它要求查詢區分大小寫。有關如何解決這個問題的任何建議? –

+0

在[這個問題](http://stackoverflow.com/a/2060960/935083)中的響應,以創建不區分大小寫的字符串類型 - 它似乎本地在測試數據上正常工作。 – rchukh

回答

1

根據我的經驗,我有,如果在字符串中還有什麼別的轉義逃脫通配符。這是爲了讓它起到通配符的作用;你會認爲它會讓它尋找角色本身,但它似乎不是。注意:在沒有其他轉義字符的情況下轉義*似乎正好搜索字符*,並且不會將其用作通配符運算符。

field:*and\/or* //would NOT perform a wildcarded search for "and/or" 

field:\*and\/or\* //would perform wildcard search for and/or 

要清楚,看起來他們倒退了,但這是什麼工作在我的情況。

+0

無法重現此行爲,仍然沒有結果。 – Simulant