2011-12-21 21 views
0

我使用標準分析存儲文本以及相同的分析儀,用於搜索Lucene的不是尋找有字「 - 」

下面是搜索文本代碼:

 Analyzer analyzer = GetAnalyzer(); 

     QueryParser parser = new QueryParser("Text", analyzer);   
     parser.SetAllowLeadingWildcard(true); 
     Query query;   

      query = parser.Parse(finalSearch); 

     Hits hits = searcher.Search(query); 

這裏是一個代碼我如何儲存文字:

fieldText = new Field("Text", text.ToLower(), Field.Store.YES, Field.Index.TOKENIZED);  

document.Add(fieldText); 
+0

請說明問題。也許舉個例子。 – 2011-12-21 15:08:29

回答

0

嘗試使用'\'轉義您的角色。 '-'將是'\-'

http://lucene.apache.org/java/2_9_1/queryparsersyntax.html#Escaping%20Special%20Characters

Lucene支持轉義特殊字符是查詢語法的一部分。當前列表中的特殊字符有:

要逃避這些字符,請在字符前使用\。例如要搜索(1 + 1):2請使用查詢:

\(1\+1\)\:2 
+0

我正在使用QueryParser.Escape(「Hello-Break」)並返回「Hello \ -Break」,但是當我執行QueryParser.Parse(「Hello \ -Break」)時,它將刪除backslach ...任何想法? – BreakHead 2011-12-21 16:52:08

+0

您是否在程序中手動輸入第二條語句?嘗試QueryParser.Parse(@「Hello \ -Break」);通過一個litteral字符串? – rickythefox 2011-12-21 19:18:52

+0

仍然沒有返回任何結果:( – BreakHead 2011-12-22 09:51:10