0

如果我输入查询 "apple" 我希望得到像 "xyzapplexyz","apple","applexyz" 这样的结果,而不是像 "app" 或 "appl" 。但我得到的是“applexyz”、“app”等。

我使用了 EdgeNgram 字段,并尝试使用以下内容进行查询:-

1-->>SearchQuerySet().all().autocomplete(authors=query)

2-->>SearchQuerySet().all().filter(authors=query)

3-->> SearchQuerySet().all().filter(content=query)

4-->> SearchQuerySet().all().autocomplete(content=query)

但它们都没有给出所需的结果。我该如何解决这个问题?

4

1 回答 1

0

如果您想要类似的结果"xyzapplexyz",那么您需要使用ngram 分析器而不是,EdgeNGram或者您可以根据您的要求同时使用两者。EdgeNGram仅从头开始生成令牌。

假设NGram 苹果将是术语xyzapplexyz生成的令牌之一max_gram >=5,您将获得预期的结果,也search_analyzer需要有所不同,否则您会得到奇怪的结果。

如果您有大量文本,也index size可能会变得很大ngram

于 2015-12-24T14:03:38.750 回答