使用type =“ngram”的Django Haystack + Solr部分匹配

时间:2012-08-23 13:10:41

标签: django solr django-haystack

我只想要检查我是否正确地做事。我想为我的django应用程序添加高级搜索功能,我开始用SOLR作为后端测试Haystack。

因为我确实需要部分匹配,所以我修改了schema.xml,因此haystack定义的文本字段的类型为nGram,如下所示:

    <field name="text" type="ngram" indexed="true" stored="true" multiValued="false" />

部分匹配现在使用haystack中包含的默认视图,因此对于名为John的模型,如果我查找“Joh”,则会找到它,因为它是“ohn”或任何3个字母组合。

这是正确的方法吗?由于性能问题,为什么默认情况下不是ngram类型的文本字段?

非常感谢!

1 个答案:

答案 0 :(得分:0)

请参阅thisthis。我不确定它在性能方面如何响应,但你也可以使用ngrams实现部分匹配行为,而不必触及你的solr架构。只需将索引的文本字段定义为EdgeNgramField。