Пример использования ASCIIFoldingFilter в Lucene.NET - PullRequest
2 голосов
/ 12 марта 2011

Я пытаюсь реализовать свой поиск в Lucene.NET, и мои потребности:

  • Ищите и находите результат напрямую
  • если результата нет, повторите поиск с Accent Insensitive

Я сделал это на SQL Server, но я хочу переместить его в Lucene.NET. Я сделал исследование, и сначала я нашел ISOLatinFilter, а затем ASCIIFoldingFilter в Lucene. Но я не смог найти простой пример, как его использовать (даже в Lucene в книге действий)

Можете ли вы дать мне небольшой пример кода для поиска без учета акцента? Нужно ли что-то менять в индексировании? Так как мне нужен также чувствительный к акценту, я не могу создать только нечувствительный к акценту индекс.

Спасибо

1 Ответ

2 голосов
/ 11 февраля 2013

Используйте этот класс в качестве вашего анализатора для индексации и поиска, работает для меня.

    public class CustomAnalyzer : StandardAnalyzer
    {
        Lucene.Net.Util.Version matchVersion;

        public CustomAnalyzer(Lucene.Net.Util.Version p_matchVersion)
            : base(p_matchVersion)
        {
            matchVersion = p_matchVersion;
        }

        public override TokenStream TokenStream(string fieldName, System.IO.TextReader reader)
        {
            TokenStream result = new StandardTokenizer(matchVersion, reader);
            result = new StandardFilter(result);
            result = new ASCIIFoldingFilter(result);
            return result;
        }

    }
...