使用Susnpot Gem进行Solr搜索
我目前正在使用太阳黑子gem在我的rails应用程序中实现全文搜索。 通过Sunspot / Solr在我的网站上查询正在运行并返回正确的结果。 但是,当我尝试使用Solr管理页面进行查询时,我很难显示结果。 使用查询字符串*:*
我可以显示索引数据库中包含的所有结果,但我无法进行正确的查询。 如果我尝试使用*:*
以外的字符串进行查询,例如test
,则不返回任何结果,我留下:
0 21 *,score on 0 test 2.2 10
使用字符串: test
在实际rails应用程序上进行相同的查询返回超过100个结果。
如何在Solr管理页面中进行查询返回与在rails应用程序中进行的查询相同的项目?
扩展Jayendra的答案(基本上是正确的):
如果我尝试使用
*:*
以外的字符串进行查询,例如test
,则不会返回任何结果…
该查询是针对defaultSearchField
运行的,默认情况下是Sunspot中的text
。 然而,令人困惑的是,太阳黑子没有在该text
字段中添加任何text
,因此您的搜索结果是正确的。 由于没有带text
字段的文档,因此在text
字段中没有包含术语test
文档。
例如,你可能有一个title_text
字段。 您可以使用q=title_text:test
直接查询该字段。
您还可以模仿Sunspot的查询:使用DisMax查询解析器,显式指定要在qf
查询的字段。 如果您想查询多个文本字段,更不用说接受DisMax的其他好处,这很有用: q=test&defType=dismax&qf=title_text+body_text
此外,Sunspot将其查询记录到development.log
,这是查找示例的好地方。
*:*
基本上会在所有字段中搜索所有字段,因此匹配所有文档。
您在Rails应用程序中搜索的是哪个字段?
默认情况下,Solr管理员的查询会在默认搜索字段(schema.xml)上触发。
text
尝试将在solr上触发的查询更改为特定字段,例如q=some_field:test
并检查是否返回结果。