我正在深入研究 solr 配置文件并尝试弄清楚如何实现自动完成功能。
这里提到的一些细节http://wiki.apache.org/solr/Suggester/
但我不想在所有网站上使用相同的字典 - 当你有一些私人数据时它没用。我的意思是有几家公司使用搜索,我想只根据公司数据进行自动填充。是否可以使用某种语法限制自动填充结果的范围。
我正在使用 Rails 3 和太阳黑子宝石和 solr 3.6
更新
我发现gem更新了 rails 3 并记录了必要的配置 这是https://github.com/xponrails/sunspot_autocomplete
这两个答案都有助于我做到这一点
答案 0 :(得分:1)
很遗憾,无法过滤通过Suggester
发出的自动建议。
你可能想看看我为其他选项写的this blog。您应该考虑使用facet前缀或本文中描述的NGrams解决方案。我猜测Ngrams解决方案更灵活,性能更高,但会导致索引大小的增长,而facet前缀方法已准备就绪,但可能更慢。试试看你喜欢哪一个。
答案 1 :(得分: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)发送查询,上述查询也应该与您要查找的类似。