-1

我得到了 Lucenes 解析器,它从表中返回了我的评论。它看起来像:

private static IEnumerable<Comment> _search(string searchQuery, string searchField = "")
{
  using (var searcher = new IndexSearcher(_directory, false))
  {
     var analyzer = new StandardAnalyzer(Version.LUCENE_30);
     {
            var parser = new QueryParser(Version.LUCENE_30, searchField, analyzer);
            var query = parseQuery(searchQuery, parser);
            var hits = searcher.Search(query, 1000).ScoreDocs;
            var results = _mapLuceneToDataList(hits, searcher);
            return results;
    }
  }
}
////Some code
private static Query parseQuery(string searchQuery, QueryParser parser)
{
    return parser.Parse(searchQuery.Trim());
}

我收到了这样的文字评论:“sometext python sometext”。当我使用 _search("python", "Text") 时,它会返回我的表。但是当我使用 _search("pyth", "Text") 时,它什么也找不到。

我很明确地知道,问题在

var query = parseQuery(searchQuery, parser);
var hits = searcher.Search(query, 1000).ScoreDocs;

但我不知道,我的查询中有问题,或者你应该在搜索器中转移一些参数......有人有什么建议吗?

亲切的问候。

4

1 回答 1

0

起初,我应该允许前导通配符。在“解析器”之后我应该写

parser.AllowLeadingWildcard = true;

然后我应该在我的查询中使用“*”字符:

return parser.Parse("*" + searchQuery.Trim() + "*");

现在它的工作。感谢卢卡斯的支持。

于 2015-01-16T14:25:43.653 回答