簡體   English   中英

執行 Lucene 搜索查詢“包含”

[英]Performing Lucene Search query “Contains”

我正在搜索包含用戶輸入的文本的文檔

如果 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 parser = new QueryParser("Text", analyzer);
parser.SetAllowLeadingWildcard(true);
var escapedSearchText = QueryParser.Escape(searchText);
return parser.Parse(string.Format("*{0}*", escapedSearchText));

即在構建查詢之前轉義搜索文本。

希望這可以幫助,

Lucene 支持作為查詢語法一部分的 escaping 特殊字符。 當前列表特殊字符是

    • && ||? ( ) { } [ ] ^ " ~ *: : \

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

(1+1)\:2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM