我试图从RavenDb获取基于上下文的建议结果,其目的是通过服务器上的大量数据自动建议ui下拉,每次击键(400ms)都会被发送以检索建议。
我需要的建议是按上下文多个单词。 让我们说我正在寻找“哈利波特”,我的文件里面只有哈利'还有一些只有' Potter'以及两者的文档。 但是,如果我输入' harre poter'我会得到一个词的建议。
我尝试使用多个单词进行搜索(demonstrated here - suggest.Term ="(word1 word2)&#34 ;;),但结果是一个单词的列表 。我想输入' harre poter'并得到“哈利波特'
的建议我甚至尝试用每个单词多次查询,但结果不是基于上下文的,换句话说 - 它们之间没有任何联系。
var words = text.Split(new String[] {" "}, StringSplitOptions.RemoveEmptyEntries).ToList();
var sugegstions = new List<SuggestionQuery>();
foreach (var word in words)
{
var suggest = new SuggestionQuery();
suggest.Field = "Body";
suggest.Term = word;
suggest.Popularity = true;
suggest.MaxSuggestions = 5;
suggest.Distance = StringDistanceTypes.Levenshtein;
sugegstions.Add(suggest);
}
var results = new List<SuggestionQueryResult>();
foreach (var suggest in sugegstions)
{
SuggestionQueryResult result =
s.Query<Book, Books_ByBody>().Suggest(suggest);
results.Add(result);
}
我查看了这个SO question,并尝试过,但结果是文档不是建议。
我的索引是:`
public class Books_ByBody:AbstractIndexCreationTask {
public Books_ByBody()
{
Map = books from book in books
select new
{
book.Body,
};
Indexes.Add(x => x.Body, FieldIndexing.Analyzed);
Suggestion(x => x.Body);
}
}
`