ArabicAnalyzer
입력에 대한 변환이 수행됩니다. 입력 الله
을 له
으로 변환합니다. 정관사 부착, 결합 및 전치사
- 제거 : 이는 ...
로 정의 따른 문서화되어 ArabicStemFilter
(및 ArabicStemmer
)의 사용이다.
- 일반적인 접미사의 줄무늬. 검색 할 때이 같은 토큰을 생산, 같은 분석을 통해 사용자 제공 쿼리를 구문 분석해야하기 때문에
이는 문제가되지 않을 것이다.
다음은 분석기가 주어진 입력에서 어떤 용어를 만들어 내는지 보여주기 위해 사용한 샘플 코드입니다.
using System;
using Lucene.Net.Analysis.AR;
using Lucene.Net.Analysis.Tokenattributes;
using System.IO;
namespace ConsoleApplication {
public static class Program {
public static void Main() {
var luceneVersion = Lucene.Net.Util.Version.LUCENE_30;
var input = "الله";
var analyzer = new ArabicAnalyzer(luceneVersion);
var inputReader = new StringReader(input);
var stream = analyzer.TokenStream("fieldName", inputReader);
var termAttribute = stream.GetAttribute<ITermAttribute>();
while(stream.IncrementToken()) {
Console.WriteLine("Term: {0}", termAttribute.Term);
}
Console.WriteLine("Done.");
Console.ReadLine();
}
}
}
이 동작을 극복 ArabicAnalyzer
가하는 것처럼하지만, ArabicStemFilter
에 대한 호출없이 ArabicNormalizationFilter
을 사용하는 사용자 지정 Analyzer
를 작성하여 (형태소 제거) 할 수 있습니다.
public class CustomAnalyzer : Analyzer {
public override TokenStream TokenStream(String fieldName, TextReader reader) {
TokenStream result = new ArabicLetterTokenizer(reader);
result = new LowerCaseFilter(result);
result = new ArabicNormalizationFilter(result);
return result;
}
}
당신이 옳았과 어떻게 ArabicAnalyzer 변경하는 것을 방지 할 수있다 "الله"하고 및에 "له"변경하지 않는 한 정확히 색인이 단어를? – MRP