Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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
C#-Lucene搜索不适用于少数字符串文本_C#_.net_Apache_Lucene_Lucene.net - Fatal编程技术网

C#-Lucene搜索不适用于少数字符串文本

C#-Lucene搜索不适用于少数字符串文本,c#,.net,apache,lucene,lucene.net,C#,.net,Apache,Lucene,Lucene.net,我们已经使用ApacheLucene实现了搜索课程。很好用。但是,我有两个记录,即“让it人员”和“做正确的事情”。当我搜索“make”“personals”时,我会得到结果,但当我搜索“make it”时,找不到结果。但它与“做它”配合得很好!我真的很困惑,为什么它不为“成功”工作。BTW查询解析器的定义如下: private readonly StandardAnalyzer _analyzer; _analyzer = new StandardAnalyzer(Version.LUCENE

我们已经使用ApacheLucene实现了搜索课程。很好用。但是,我有两个记录,即“让it人员”和“做正确的事情”。当我搜索“make”“personals”时,我会得到结果,但当我搜索“make it”时,找不到结果。但它与“做它”配合得很好!我真的很困惑,为什么它不为“成功”工作。BTW查询解析器的定义如下:

private readonly StandardAnalyzer _analyzer;
_analyzer = new StandardAnalyzer(Version.LUCENE_29);
var parser = new MultiFieldQueryParser(Version.LUCENE_29, new[] { "Name",     "Description", "Id" }, _analyzer);

var queryParser = parseQuery(BuildPrefixQuery(input), parser);

var hits = searcher.Search(queryParser, null, 50, Sort.RELEVANCE).ScoreDocs;
&索引创建代码是

public void CreateIndex(List<ILucenceProperties> ListILucenceProperties)
    {
var writer = new IndexWriter(_directory, _analyzer, true,     IndexWriter.MaxFieldLength.UNLIMITED);

        foreach (var iLucenceProperties in ListILucenceProperties)
        {
            var document = new Document();

            document.Add(new Field("Id", iLucenceProperties.Id, Field.Store.YES, Field.Index.ANALYZED));
            document.Add(new Field("Name", iLucenceProperties.Name, Field.Store.YES, Field.Index.ANALYZED));
            document.Add(new Field("Description", iLucenceProperties.Description, Field.Store.YES, Field.Index.ANALYZED));
            document.Add(new Field("Category", iLucenceProperties.Category, Field.Store.YES, Field.Index.NO));
            document.Add(new Field("FilterID", iLucenceProperties.FilterID, Field.Store.YES, Field.Index.NO));
            document.Add(new Field("ColumnName", iLucenceProperties.ColumnName, Field.Store.YES, Field.Index.NO));
            document.Add(new Field("AdditionalSearchParameter", iLucenceProperties.AdditionalSearchParameter, Field.Store.YES, Field.Index.NO));
            writer.AddDocument(document);
        }

        writer.Optimize();
        writer.Dispose();
    }
public void CreateIndex(列出listilunceproperties)
{
var writer=new IndexWriter(_目录,_分析器,true,IndexWriter.MaxFieldLength.UNLIMITED);
foreach(ListIluceProperties中的变量IluceProperties)
{
var document=新文档();
添加(新字段(“Id”,iluceProperties.Id,Field.Store.YES,Field.Index.analysis));
添加(新字段(“名称”,iluceProperties.Name,Field.Store.YES,Field.Index.analysis));
添加(新字段(“Description”,iluceProperties.Description,Field.Store.YES,Field.Index.analysis));
添加(新字段(“类别”,iluceProperties.Category,Field.Store.YES,Field.Index.NO));
添加(新字段(“FilterID”,iluceProperties.FilterID,Field.Store.YES,Field.Index.NO));
添加(新字段(“ColumnName”,iluceProperties.ColumnName,Field.Store.YES,Field.Index.NO));
添加(新字段(“AdditionalSearchParameter”,iluceProperties.AdditionalSearchParameter,Field.Store.YES,Field.Index.NO));
编写者。添加文档(文档);
}
writer.Optimize();
writer.Dispose();
}
上面,“Name”字段包含课程名称,“Id”包含课程Id,“Description”包含另一个课程Id,依此类推


我认为问题可能出在解析器/分析器上。请帮帮我。

标准分析器过滤掉停止词,如“it”。但当你搜索时,你会把“it”作为关键词。您可以使用获取停止词列表并使用空集调用它。

标准分析器过滤掉停止词,例如“it”。但当你搜索时,你会把“it”作为关键词。您可以使用包含停止词列表的,并用空集调用它。

我认为我们需要看到更多的代码,特别是与查询匹配的代码,甚至可能向我们展示一些真实的(如果可能的话)实际使用这些关键字的示例数据。我认为我们需要更多的代码,特别是与查询匹配的代码,甚至可能向我们展示一些实际使用这些关键字的示例数据。超级!非常感谢。以下改变奏效了_analyzer=新的StandardAnalyzer(Version.LUCENE_29,chararlyset.EMPTY_SET);但是对于诸如“html/java编程”之类的课程,它是不起作用的。i、 e.当特殊字符“\”或“/”是课程名称的一部分时。我们只允许这些特殊字符作为课程名称的一部分。你能帮帮我吗?你可以尝试转义特殊字符,或者尝试另一个标记器。请参阅.Yes,如果我们将特殊字符转义为Query Query=parser.Parse(QueryParser.escape(searchQuerystr)),则可以使用Query Query=parser.Parse(QueryParser.escape(searchQuerystr));(我们的解析器是多域解析器。)我可以搜索“html/java编程”,但我不能搜索“html/java编程”、“html/java编程”等,也就是说,它现在需要完整的单词!超级的!非常感谢。以下改变奏效了_analyzer=新的StandardAnalyzer(Version.LUCENE_29,chararlyset.EMPTY_SET);但是对于诸如“html/java编程”之类的课程,它是不起作用的。i、 e.当特殊字符“\”或“/”是课程名称的一部分时。我们只允许这些特殊字符作为课程名称的一部分。你能帮帮我吗?你可以尝试转义特殊字符,或者尝试另一个标记器。请参阅.Yes,如果我们将特殊字符转义为Query Query=parser.Parse(QueryParser.escape(searchQuerystr)),则可以使用Query Query=parser.Parse(QueryParser.escape(searchQuerystr));(我们的解析器是多域解析器。)我可以搜索“html/java编程”,但我不能搜索“html/java编程”、“html/java编程”等,也就是说,它现在需要完整的单词!