2014-01-07 246 views
-1

我有一个solr查询如:host:8983/solr/collection/select?q=propids%3A1&wt=json&indent=true 其中我过滤关于propids:1.问题是当过滤器propids:1和2,我只有文件索引与propids:1,buuut我得到所有与索引结果使用时,即使我没有任何propids有2。任何帮助表示赞赏。由于Solr查询不返回预期结果

+1

随着Solr,你将不得不提供更多的信息。在solrconfig.xml中包含您的模式设计(schema.xml中的字段)以及请求处理程序的定义(“/ select”引用)。 – jro

+0

我需要带有propid 1和2的文档,它是一个multiValued字段,值之间用“,”分隔。这些将是一些产品的性能,如容量和功率或任何财产。每个产品都有一个容量属性,一个属性等等。当我构建我的过滤器时,我必须构建我的查询,所以如果选择了一种容量,它应该返回所有带有该属性的prod,比如果选择了另一个prop,它应该返回刺激具有第一个AND第二个属性。希望现在很清楚:) – geryjuhasz

+0

“我需要带有propid 1和2的文档,它是一个多值字段,值之间用”,“分隔 - 可以显示您的模式字段定义和已编制索引的示例文档吗? – jro

回答

1

含有propids = 1

host:8983/solr/collection/select?q=*:*&wt=json&indent=true&fq=propids:1 

含有propids = 2

host:8983/solr/collection/select?q=*:*&wt=json&indent=true&fq=propids:2 

所有结果全部结果包含所有的结果要么propids = 1或propids = 2

host:8983/solr/collection/select?q=*:*&wt=json&indent=true&fq=propids:(1 OR 2) 

所有包含propids = 1和propids = 2的结果

host:8983/solr/collection/select?q=*:*&wt=json&indent=true&fq=propids:1&fq=propids:2 
+0

看来好,很遗憾,我不能再测试它了,因为我已经修改了逻辑。我认为这是正确的答案。谢谢。 – geryjuhasz

0

我猜你的查询部分是

Q = propids:1和2

这并不意味着它会搜索propids = 1和2

请检查您的solrconfig.xml作为默认搜索字段。 因为如果您的查询像我mentioed,那么就意味着

Q = propids:1和default_searchable_field:2

0

如果你需要得到与propids = 1页加上propids = 2的文档文件, 做这个。

q=propids:1 2 

这将匹配字段(1和2)与该字段的内容并获得两种类型的文档。

+0

注意:这里假设一个默认的OR查询操作符。 – jro