我做搜索的文件包含由用戶執行Lucene的搜索查詢「包含」
如果SEARCHTEXT不具備任何特殊字符,它工作正常輸入的文本。
下面是我如何創建我的QueryParser。 :
//analyzer is an StandardAnalyzer()
QueryParser parser = new QueryParser("Text", analyzer);
parser.SetAllowLeadingWildcard(true);
return parser.Parse(string.Format("*{0}*", searchText));
我得到,如果搜索文本中包含的任何特殊字符以下錯誤:
假設說搜索文本是「牀[」
Cannot parse '*bed [*': Encountered "<EOF>" at line 1, column 7.
我怎樣才能讓我的如果搜索文本中有任何特殊字符,並且我不想忽略特殊字符,則查詢解析器不會失敗。
另一件事我想問的是做QueryParser.Escape後,將它忽略,而查詢的特殊字符我的意思是將它仍然搜索「牀[」或QueryParser的。 .Escape會讓它搜索只有「牀」 – Malcolm
我不完全確定你在這裏之後,但我懷疑你是使用標準分析器進行索引/查詢。如果這是ca然後是:這些字符將被分析器默默忽略(或者說,跳過)。 –
是的,我正在使用StandardAnalyser,經過測試,我看到它的忽略,有沒有任何工作,所以我可以使它與特殊字符工作,而不是忽略他們 – Malcolm