RavenDb建议 - 返回多个上下文单词

时间:2017-06-30 09:48:28

标签: autocomplete nlp ravendb autosuggest

我试图从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);
        }
    }

`

0 个答案:

没有答案