Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 关于关键字搜索和lucene.net c_Asp.net_Lucene.net - Fatal编程技术网

Asp.net 关于关键字搜索和lucene.net c

Asp.net 关于关键字搜索和lucene.net c,asp.net,lucene.net,Asp.net,Lucene.net,我只是在浏览lucene.net上的文章。我得到了一些使用lucene.net创建索引的示例代码,但有几行代码我不清楚。这是电话线 protected void btnCreateIndex_Click(object sender, EventArgs e) { IndexWriter writer = new IndexWriter(MapPath("~/searchlucene/"), new StandardAnalyzer(), false); IndexDoc

我只是在浏览lucene.net上的文章。我得到了一些使用lucene.net创建索引的示例代码,但有几行代码我不清楚。这是电话线

    protected void btnCreateIndex_Click(object sender, EventArgs e)
{
    IndexWriter writer = new IndexWriter(MapPath("~/searchlucene/"), new StandardAnalyzer(), false);

    IndexDocument(writer, "About Hockey", "hockey", "Hockey is a cool sport which I really like, bla bla");
    IndexDocument(writer, "Some great players", "hockey", "Some of the great players from Sweden - well Peter Forsberg, Mats Sunding, Henrik Zetterberg");
    IndexDocument(writer, "Soccer info", "soccer", "Soccer might not be as fun as hockey but it's also pretty fun");
    IndexDocument(writer, "Players", "soccer", "From Sweden we have Zlatan Ibrahimovic and Henrik Larsson. They are the most well known soccer players");
    IndexDocument(writer, "1994", "soccer", "I remember World Cup 1994 when Sweden took the bronze. we had great players. players , bla bla");
    IndexDocument(writer, "BBA-header", "BBA-321type", "Hello BBA");

    writer.Optimize();
    writer.Close();

}
private void IndexDocument(IndexWriter writer, string sHeader, string sType, string sContent)
{
    Document doc = new Document();

    doc.Add(new Field("header", sHeader, Field.Store.YES, Field.Index.TOKENIZED));
    doc.Add(new Field("type", sType, Field.Store.YES, Field.Index.TOKENIZED));
    doc.Add(new Field("content", sContent, Field.Store.YES, Field.Index.TOKENIZED));
    writer.AddDocument(doc);
}
我有几个问题 1 doc.Addnew Fieldheader,sHeader,Field.Store.YES,Field.Index.TOKENIZED; 这句话是什么意思。Field.Index.TOKENIZED什么是标记化和非标记化?? 当我搜索在类型参数中指定的关键字时,什么也不会出现。 只是不理解这种行为

这里是一个搜索示例,我在其中指定了一个索引为type的关键字

    ListBox1.Items.Clear();
    var searcher = new Lucene.Net.Search.IndexSearcher(MapPath("~/searchlucene/"));
    var oParser = new Lucene.Net.QueryParsers.QueryParser("content", new StandardAnalyzer());
    string sHeader = " OR (header:" + TextBox1.Text + ")";
    string sType = " OR (type:" + TextBox1.Text + ")";
    string sSearchQuery = "(" + TextBox1.Text + sHeader + sType + ")";

    var oHitColl = searcher.Search(oParser.Parse(sSearchQuery));
    for (int i = 0; i < oHitColl.Length(); i++)
    {
        Document oDoc = oHitColl.Doc(i);
        ListBox1.Items.Add(new ListItem(oDoc.Get("header") + oDoc.Get("type") +  oDoc.Get("content")));            
    }

    searcher.Close();

请有人帮我理解,以驱除我的困惑。谢谢

我刚刚测试了你的代码,它在Lucene 2.9.4上运行良好

Field.Index.TOKENIZED表示分析器将以标记形式将您的文本打断,这意味着它可以全文搜索。对于不需要分析的字段,如产品ID,可以使用UN_标记

注意:您应该使用Field.Index.analysisd和Field.Index.NOT_analysisd,它们是其不推荐的标记化/非标记化对应项的替换项

要查看分析和非分析之间的差异,您可以尝试两者,并使用Luke检查索引,这可能会让您对其工作原理有一个很好的了解


谢谢你的回答。这里你给出的链接与lucene.net无关。是否有lucene.net的文档或详细教程…如果有,请给我链接。如何重建lucene.net索引。有没有办法删除所有索引并重新创建。如果遮住一些光线。谢谢