나는 Lucene.NET과 함께 작업하고 있습니다. 아시아 언어를 검색하는 방법에 대해 연구했습니다. 나는 StandardAnalyzer에서 CJKAnalyzer로 옮겼습니다.CJKAnalyzer/Tokenizer가 일본어 텍스트를 인식하지 못함
한국에서는이 기능이 정상적으로 작동하지만 (한국어는 StandardAnalyzer가 한국어로 잘 돌아 갔지만!) 중국어는 작동하지만 일본어 텍스트를 인식하는 프로그램을 아직 만들 수 없습니다.
는 아주 작은 예를 들어, 나는 다음 시도하고 데이터베이스에서 읽고, 거기에 몇 단어와 함께 작은 데이터베이스합니다 (CJKAnalyzer 사용) 쓰기 :
쓰기위한거야public void Write(string text, AnalyzerType type)
{
Document document = new Document();
document.Add(new Field(
"text",
text,
Field.Store.YES,
Field.Index.ANALYZED));
IndexWriter correct = this.chineseWriter;
correct.AddDocument(document);
}
. 그리고 읽기 : chineseWriter가 CJKAnalyzer와 단지 IndexWriter해진다
public Document[] ReadMultipleFields(string text, int maxResults, AnalyzerType type)
{
Analyzer analyzer = this.chineseAnalyzer;
QueryParser parser = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "text", analyzer);
var query = parser.Parse(text);
// Get the fields.
TopFieldCollector collector = TopFieldCollector.create(
new Sort(),
maxResults,
false,
true,
true,
false);
// Then use the searcher.
this.searcher.Search(
query,
null,
collector);
// Holds the results
List<Document> documents = new List<Document>();
// Get the top documents.
foreach (var scoreDoc in collector.TopDocs().scoreDocs)
{
var doc = this.searcher.Doc(scoreDoc.doc);
documents.Add(doc);
}
// Send the list of docs back.
return documents.ToArray();
}
을 전달하고, chineseAnalyzer 그냥 CJKAnalyzer입니다.
japanese가 작동하지 않는 이유에 대한 조언이 있으십니까? 내가 보내는 입력 공정 보인다
プ ー ケ ッ ト
내가 저장하지만, 그것을 읽을 수없는 것입니다. :(
편집 :이 검색어는 2 자보다 긴, 그것은 작동이 중지 같은 일본어로
편집 2 부 :.. I을 나는 중국이 정말로 하나가 작동하지 않습니다 ... 잘못 이제 문제가 접두사 검색을 사용하고있는 것을 보았습니다. 처음 2자를 검색하고 별표를 사용하면 작동합니다 .2가 넘어 가면 작동이 멈 춥니 다. 단어가 토큰 화되는 방식? 전체 용어를 검색하면 찾을 수 있습니다. Lucene.NET에서 CJK에 대한 접두사 검색을 사용하려면 어떨까요? * 작동하지만, 아무 것도 찾을 수 없습니다.
Lucene.Net/Lucene.Net Contrib의 버전을 사용하고 있습니다. 방금 NuGet에서 사용할 수있는 패키지의 최신 버전을 사용하여 테스트했으며 사용자 입력에 따라 작동합니다. –
@Jf Beaulac - 2.9 사용. – peteisace
나는 귀하의 질문 중 하나에 대답 할 수 있습니다 :'푸켓'은 푸켓, 태국의 도시입니다. :)하지만 나는 다른 사람에게 대답 할 수 없다. –