繁体   English   中英

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

[英]C# - Lucene search is not working for few string literals

我们已经实现了使用Apache lucene搜索课程的搜索。 一切正常。 但是,我有2条记录,即“ Make it person”和“ Do it right right”。 当我搜索“ make”“人员”时,我会得到结果,但是当我搜索“ make”时,找不到结果。 但这与“执行”效果很好! 我真的很困惑为什么它不能用于“ 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();
    }

上面的“名称”字段包含课程名称,“名称”包含课程ID,“说明”包含课程ID,依此类推。

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

StandardAnalyzer过滤掉停用词,例如“ it”。 但是,当您进行搜索时,会将“ it”作为关键字。 您可以使用带有停用词列表的StandardAnalyzer构造函数 ,并使用空集对其进行调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM