2009-12-14 1 views
1

나는 웹 사이트를 만들었지 만 문제가 있습니다. 나는 을 한번 만들고 색인을 사용하고 싶습니다. 순간 Lucene.net : 건물 인덱스와 인덱스 검색

나는 사용자가 제출할 때

를 "검색"과 "디렉토리에 문서에게 가게를 만드는"두 가지 기능을 가지고 :

sub submit() 
    create_doc() 
    search(text) 
end sub 

이 작품을,하지만 난이 때 :

create_doc() 
sub submit() 
    search(text) 
end sub 

디렉토리가 삭제 된 것과 같습니다.

global: 
Dim analyzer As StandardAnalyzer = New StandardAnalyzer()Dim directory As Directory = FSDirectory.GetDirectory("C:\[...]luceneindex", True) 
Dim indexwriter As IndexWriter = New IndexWriter(directory, analyzer, True) 

Sub create_doc() 
    Dim meindoc As New Document() 
    im feldbodytext As Field = New Field("bodytext", textstring[...] 
    meindoc.Add(feldbodytext) 
    indexwriter.AddDocument(meindoc) 
    indexwriter.Close() 
end sub 

Sub lucene_search(ByVal strSuchbegriff As String) 
    Dim parser As QueryParser = New QueryParser("bodytext", analyzer) 
    Dim query As Query = parser.Parse(strSuchbegriff) 
    Dim hits As Hits = searcher.Search(query) 
    [...] 
end sub 

색인을 영구적으로 저장할 수 있습니까? init에 문제가있을 수 있습니다. 색인 작가 gloabel,하지만 로컬 가까이?

답변

4

나는 당신의 문제는, 인덱스가 다시 작성되고 있으며, 삭제 인덱스의 내용이 때마다 당신이 당신의 IndexWriter 선언 있다고 생각 -이 때문에 3 매개 변수를 생성자 (True)로 전달되는입니다 :

Dim indexwriter As IndexWriter = New IndexWriter(directory, analyzer, True) 

대신 인덱스의 기존 내용이 변경되지 않은 상태로 유지해야 함을 표시하기 위해, False 사용해야합니다

Dim indexwriter As IndexWriter = New IndexWriter(directory, analyzer, False) 
+0

안녕하세요, 당신의 IndexWriter = 새 IndexWriter (디렉토리, 분석기, 거짓) 으로 희미한 indexwriter를 사용하여을 yor 대답 을 위해 내가 과 심지어는 "소스를 찾을 수 없습니다"오류가 발생할 감사합니다 처음으로 색인을 생성 할 때 아무 것도 찾지 못합니다. 두 함수를 모두 찾아서 색인을 찾습니다. 디렉토리 일 수 있습니까? : Dim 디렉토리로 디렉토리 = FSDirectory.GetDirectory ("C : \ Dok [...] \ luceneindex", True) – Tyzak

0

아를, 내가 그것을

을 ;-) 내가 가지고 생각

내가

Dim directory As Directory = FSDirectory.GetDirectory("C:\[...]\luceneindex", True) 
Dim indexwriter As IndexWriter = New IndexWriter("C:\[...]luceneindex", analyzer, True) 

을 사용하는 가지고 인덱스를 생성 및 인덱싱 후 나는 모두가 "거짓"으로 사용하는 것은 이번이 처음.

실제 모든 시간에 인덱스가 생성됩니까? 감사 =)

+0

예 - 먼저 색인을 만들 때 사용하고 그 지점에서 사용하십시오 기존 색인에 추가 함을 나타내는 경우 거짓입니다. – Justin