【发布时间】:2015-08-06 16:18:28
【问题描述】:
我是 solr 的新手,尝试使用旨在更方便的 Edismax 解析器。
我有两个小问题。 1.根据教程,我们可以使用q&qf参数的组合:
"params": {
"mm": "3",
"q": "distributed system solr",
"defType": "dismax",
"indent": "true",
"qf": "id",
"fl": "id,score",
"rows": "100",
"wt": "json",
"_": "1438877562378"
}
但如果是这样,根本就没有结果。为什么会这样?
- 我移至 q.alt 字段。
"params": {
"mm": "3",
"defType": "dismax",
"q.alt": "distributed system solr",
"indent": "true",
"qf": "id",
"fl": "id,score",
"rows": "100",
"wt": "json",
"_": "1438877657837"
}
},
据我了解,它应该只对 qf : id 字段进行查询。但正如结果所示,我认为它也在数据内容或数据流中查询“q”字段来创建分数。我可能会误解某些观点,但想知道分数是如何产生的。它应该只对 id 字段进行查询吗?
【问题讨论】:
-
你能分享你的 solrcongfig.xml 选择处理程序吗?
-
将 debugQuery 添加到您的查询中(您可以在管理查询界面中轻松完成此操作),这将允许您查看正在查询哪些字段。
qf告诉 dismax 处理程序它应该搜索哪些字段,因此第一个查询在名为id的字段中搜索“分布式系统 solr”的所有三个术语 - 这似乎是id字段中的奇怪内容.如果您打算使用 edismax 解析器,您可能应该使用edismax而不是dismax。 -
@MatsLindh,是的,我试过edismax,这一次,我看看我是否在id中设置了搜索字段,在q中设置了搜索参数,例如,如果q ='2015-06-10T00: 00:00Z' id='date' 有结果。但是如果q='2015-06-10T',没有结果,我的意思是不支持模糊匹配或者正则匹配的东西,很奇怪
-
如果要查询日期字段,如果要查询特定日期的所有值,则必须使用正确的语法。你不能只使用前缀。
标签: solr