2012-07-20 71 views
1

我钻进去Solr的配置的东西,揣摩如何实现自动完成功能。与范围Solr的自动完成这可能吗?

一些细节这里提到http://wiki.apache.org/solr/Suggester/

但我不希望使用相同的字典对所有的网站 - 当你有一些私人数据是没有用的。我的意思是几个企业使用搜索,我想做出仅基于公司数据autocompleate。是否有可能限制自动完成结果使用某种语法来限定它们。

我与的Rails 3太阳黑子宝石工作Solr的3.6

更新:

我发现宝石这更新的轨道3和必要的配置文件 这里是它https://github.com/xponrails/sunspot_autocomplete

这两个答案帮助我做到这一点

回答

1

不幸的是,不可能过滤通过Suggester作出的自动建议。 您可能想看看this blog我写了其他选项。您应该考虑使用无论是小前缀或文章中描述的n-gram的解决方案。 Ngrams解决方案更灵活,性能更高,但会导致索引大小的增长,而方面前缀方法已准备就绪,但可能会更慢。只要给他们一个尝试,看看你更喜欢哪一个。

+0

不错的文章 - 谢谢。 – Vladimir 2012-07-20 10:48:18

+0

谢谢!我用更多的细节更新了我的答案。如果您有任何疑问,请告诉我! – javanna 2012-07-20 14:31:03

1

我正在使用EdgeNgram字段并对其进行自动完成查询。

像这样的事情在你的schema.xml:

<field name="title_auto" type="edge_ngram" indexed="true" stored="true" multiValued="false" /> 

查询“测试”看起来像

Jul 20, 2012 12:28:58 PM org.apache.solr.core.SolrCore execute 
INFO: [collection1] webapp=/solr path=/select/ params={spellcheck=true&sort=date+desc fl=*+score&start=0&q=title_auto:(test)&spellcheck.count=1&spellcheck.collate=true&wt=json hits=0 status=0 QTime=2 

即使我使用第三方应用程序来查询发送到Solr( Django-Haystack),上面的查询应该与您正在查找的内容类似。