我只是想检查一下我做事情的方式是否正确。我想在我的django应用程序中添加高级搜索功能,我开始用SOLR作为后端测试Haystack。
由于我确实需要部分匹配,我修改了schema.xml,因此haystack定义的文本字段类型为nGram,如下所示:
<field name="text" type="ngram" indexed="true" stored="true" multiValued="false" />
部分匹配现在使用haystack中包含的默认视图,所以对于一个名为John的模型,如果我查找"Joh",就会找到它,因为它是"ohn"或任何3个字母的组合。
这是正确的路吗?由于性能问题,为什么默认情况下不使用ngram类型的文本字段?
非常感谢!
看看这个和这个。我不确定它在性能方面是如何响应的,但您可以实现部分匹配行为,也可以使用ngrams,而不必接触您的solr模式。只需将索引的文本字段定义为EdgeNgramField。