6

我需要为分配给文章的一系列关键短语编制索引。短语存储为带有 \r\n 分隔符的字符串,一个短语可能包含另一个短语,例如:

这是一个关键词
这也是一个关键词
这也是一个关键词

将被存储为

keywords: "This is a key phrase\r\nThis is a key phrase too\r\nThis is also a key phrase"

执行搜索时不应匹配This is a key phrase too具有短语的文章。This is a key phrase

我有一个自定义索引器ISimpleDataService,它可以正常工作并对内容进行索引,但我不知道如何获取诸如“这是一个关键短语”之类的查询来返回结果。

从我读过的内容来看,我认为默认值QueryParser应该在分隔符上拆分,并将每个条目视为一个单独的值,但它似乎不是这样工作的。

尽管我尝试了各种实现,但我当前的搜索代码如下所示:

var searcher = ExamineManager.Instance.SearchProviderCollection["KeywordsSearcher"];
var searchCriteria = searcher.CreateSearchCriteria(BooleanOperation.Or);
var query = searchCriteria.Field("keywords", keyword).Compile();
var searchResults = searcher.Search(query).OrderByDescending(x => x.Score).ToList();

我认为这样做的“简单”方法是将每个关键字添加为单独的“关键字”字段,但是SimpleDataSet作为 .NET 实现的一部分提供的使用 a Dictionary<string, string>,这使我无法使用一样的名字。

我是 Lucene 和 Umbraco 的新手,因此我们将不胜感激地收到任何建议。

4

0 回答 0