我們如何搜索字段索引中的文本的一部分? 例如: 如果我有一個Invoicenumber提交的指數,說InvoiceNumber =「INV04552」Azure搜索找到匹配文本
如果我輸入搜索= '45' 和searchFileds = InvoiceNumber它不會給任何結果,但它給出結果時,搜索= 'INV04552'。
我需要結果時,搜索= '45'我該如何解決這個問題?
我們如何搜索字段索引中的文本的一部分? 例如: 如果我有一個Invoicenumber提交的指數,說InvoiceNumber =「INV04552」Azure搜索找到匹配文本
如果我輸入搜索= '45' 和searchFileds = InvoiceNumber它不會給任何結果,但它給出結果時,搜索= 'INV04552'。
我需要結果時,搜索= '45'我該如何解決這個問題?
對於搜索領域Azure的搜索支持精確匹配和前綴匹配(請閱讀有關後綴運算符「*」在這裏:Simple query syntax對於過濾領域,我們只支持精確匹配
在索引時間文本文檔是。 。分成方面。例如,如果使用標準(默認),非特定語言的分析,這將是你的問題,第二句產生的術語列表:
1: [for]
2: [example]
3: [if]
4: [i]
5: [have]
6: [a]
7: [invoicenumber]
8: [filed]
9: [in]
10: [index]
11: [say]
12: [invoicenumber]
13: [inv04552]
如果查詢包含其中一個條款,該文件將被發現。正如你可以看到'INV04552'在lis上但'45'不是。標準分析器使用Unicode Text Segmentation算法將句子分解爲條目。在這種情況下,每個空格,逗號和'='符號都被打破。
要解決這個問題,如果您的發票號碼遵循明確定義的模式,則可以通過引入短劃線「 - 」或空格(例如INV-04552)對它們進行索引前的預處理。那會告訴分析儀將INV-04552分成兩個項。結果,每一個都是可搜索的。或者,您可以修整發票號碼的前3-4個字符,並使用前綴查詢在「4552」中查找「45」。如果前4個字符無意義,這只是一個有效的解決方案。
請讓我知道這是否回答你的問題。如果您有興趣,我可以提供更多詳情。
是的,它是像45 *表達的作品,但我需要像\ * 45 \ *表達式,因爲前幾個字母不能修復,所以我不能拆分它,它應該搜索,但不止一個字段,例如發票數字和描述字段也是如此。我已經在SQL Server中使用LIKE語句實現了它。 – user2114049 2015-04-04 15:39:28