Lucene.net:从搜索索引中分离出建筑物指数

时间:2009-12-14 10:46:47

标签: asp.net 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

是否有可能永久存储索引? 可能会出现问题。索引作家gloabel,但关闭它本地?

2 个答案:

答案 0 :(得分:4)

我认为你的问题是每次声明你的IndexWriter时,都会重新创建索引并删除索引的内容 - 这是因为第3个参数被传递给构造函数({{ 1}}):

True

您应该使用Dim indexwriter As IndexWriter = New IndexWriter(directory, analyzer, True) 来表示索引的现有内容应保持不变:

False

答案 1 :(得分:0)

啊,我想我已经得到了它; - )

我第一次创建索引时必须使用

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

并且在索引之后我必须同时使用“False”。

真的每次都会创建一个索引吗? 谢谢=)