У меня проблемы с Lucene, которые сводят меня с ума. У меня есть следующие поля:Проблемы с Lucene searchinh с дефисным полем
doc.Add(new Field("cataloguenumber", i.CatalogueNumber.ToLower(), Field.Store.YES, Field.Index.ANALYZED));
который будет содержать номер каталога, который выглядит примерно так:
- DF-GH5
- DF-FJ4
- DF-DOG
- AC -DP
- AC-123
- AC-DOCO
т. Е. Два символа, за которыми следует дефис, а затем 2-5 буквенно-цифровых символов.
Я пытаюсь запустить булево запрос, чтобы позволить пользователям осуществлять поиск по данным:
// specify the search fields, lucene search in multiple fields
string[] searchfields = new string[] { "cataloguenumber", "title", "author", "categories", "year", "length", "keyword", "description" };
// Making a boolean query for searching and get the searched hits
BooleanQuery mainQuery = new BooleanQuery();
QueryParser parser;
//Add filter for main keyword
parser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_30, searchfields, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30));
parser.AllowLeadingWildcard = true;
mainQuery.Add(parser.Parse(GetMainSearchQueryString(SearchPhrase)), Occur.MUST);
Система работает нормально для всех полей КРОМЕ cataloguenumber, которые по каким-то причинам не работает вообще.
В идеале мы хотели бы иметь возможность поиска по полному или частичному cataloguenumber так, например, «DF-» должен вернуть все элементы с префиксами DF
Кто-нибудь знает, как я могу сделать эту работу?
Большое спасибо заранее
Olly
Стоит добавить, что я знаю, что это поле индексируется (в той или иной форме), потому что я открыл файл _mcd.cfs и я могу увидеть некоторые каталожные номера там –