簡體   English   中英

C# NOT escaping 在 Lucene 查詢中搜索運算符

[英]C# NOT escaping search operators in Lucene query

根據https://docs.microsoft.com/en-us/azure/search/query-lucene-syntax特殊字符應該被轉義:

需要 escaping 的特殊字符包括: + - & |? ( ) { } [ ] ^ " ~ *: : \ /

問題是其中一些是搜索運算符:+ - | ”。

與引號相同的問題“。當它們是運算符時,我需要區分大小寫:“銀行賬戶”和銀行賬戶(不帶引號)是 2 個不同的查詢。

例如,報價可能是英寸:英寸(十英寸)。

要是有這樣的就好了:

string searchPhrase = banking -account // no need to escape because "-" is a search operator

string searchPhrase = "banking :-\) sucks" // needed to escape because "-" is not a search operator

string searchPhrase = bank "account opening" // no needed to escape 

string searchPhrase = 100\" // inches not a search operator must be escaped

上面寫的內容是針對 Azure 搜索索引的搜索查詢進行測試的:

“search=banking -account”“search=banking \-account” (帶有轉義的“-”)產生不同數量的結果。

有沒有辦法以編程方式決定特殊字符何時需要 escaping 或者我在這里遺漏了一些明顯的東西?

如果您使用的是standard.lucence,大多數特殊字符將充當分隔符。 而且您的數據不會與特殊字符一起索引。 您可以參考此鏈接並測試您的數據如何使用不同的分析器進行索引。

https://docs.microsoft.com/en-us/rest/api/searchservice/test-analyzer

您是否希望用戶輸入運算符? 如果不是,您可以轉義用戶輸入的所有特殊字符。

暫無
暫無

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

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