问题描述
||
我刚刚开始探索SolrNet。以前我一直在使用MSsql FULL TEXT。
在sql server中,我的查询进行全文搜索,并且还具有多个联接和Where子句。我还使用自定义分页,仅返回百万行中的10行。
我读了一些solrNet文档,并运行博客上提供的示例应用程序。到目前为止一切都很好。只需了解一下,如何使用JOINS和WHERE子句?
例如如果用户搜索Samsung,db将返回10万条记录,但是如果用户搜索Samsung && City = \'New York \'&& Price> \'500 \',那么他将仅获得数千条记录。
是否在Solr中添加所有列并在Solr中编写WHERE子句?
我该如何处理sql JOINS?
提前致谢!
解决方法
Solr中没有任何联接。从Solr Wiki:
Solr提供了一张桌子。存放一套
索引中的数据库表
需要将某些
表。尝试避免
非正规化通常会失败。
关于WHERE子句(即过滤),请参阅在SolrNet中查询,Solr查询语法和Common Solr查询参数。
, Solr等效于where子句的作用是将列映射到字段并根据查询语法运行查询。像您的示例这样的查询:
Samsung && City=\'New york\' && Price >\'500\'
可以在Solr中翻译成这样:
q=Samsung AND city:\"new york\" AND price:[500 TO *]
将数据库映射到Solr模式时,需要特别小心,特别是可能必须对数据进行非规范化。有关更多信息,请参见Solr Wiki上的此页面。基本上,您不能真正在Solr中执行复杂的JOIN。它是一个“扁平”索引。