В Поиске Azure в поле со значениями, такими как «12-10-3» или «30-843-44», я настроил собственный токенизатор, чтобы заменить тире пустой строкой.
Я сейчасЯ хочу выполнить поиск "заканчивается с помощью регулярных выражений", но не могу заставить его делать то, что я хочу.
Например, чтобы найти коды, заканчивающиеся на 3, я пытался:
searchMode=any&queryType=full&search=code:/(.*)3/
Этовозвращает, скажем, «12-10-3», но также такие, как «30-843-44».
Затем я попытался:
searchMode=any&queryType=full&search=code:/(.*)3[^<0-9>]*/
Но, похоже, это дает тот же результат,Я пытался пройти через синтаксис регулярных выражений, на который есть ссылки в документах поиска Azure здесь .
Когда я проверяю моего токенизатора на "123-456-78",Кажется, он работает, поэтому я не понимаю, почему поиск регулярных выражений работает некорректно.
"tokens": [
{
"token": "12345678",
"startOffset": 0,
"endOffset": 10,
"position": 0
}
]
Есть идеи?
Обновление:
Токенизаторприменяется в C # следующим образом:
var myIndexDefinition = new Index()
{
Name = "MyIndex",
Analyzers = new[]
{
new CustomAnalyzer
{
Name = "code_with_dash_analyzer",
Tokenizer = TokenizerName.Keyword,
CharFilters = new CharFilterName [] { "dash_to_empty_mapper" }
}
},
CharFilters = new List<CharFilter>
{
new MappingCharFilter("dash_to_empty_mapper", new[] { "- => " })
},
Fields = new[]
{
// Field with the dash in the values
new Field("codes", DataType.String) { IsRetrievable = true, IsSearchable = true, IsSortable = true, IsFilterable = true, IsFacetable = true },
//.... other field definitions....
}
}