2011-11-10 142 views
4

我目前使用太阳黑子宝石来实现我的Rails应用程序中的全文搜索。通过太阳黑子/ Solr查询我的网站正在工作并返回正确的结果。但是,当我尝试使用Solr管理页面进行查询时,我很难显示结果。使用查询字符串*:*我可以显示包含在索引数据库中的所有结果,但我无法进行正确的查询。如果我尝试使用比*:*其他诸如test字符串进行查询,不返回任何结果,我留下了:test实际Rails应用程序的回报:Solr搜索使用Susnpot Gem

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">21</int> 
    <lst name="params"> 
    <str name="explainOther"/> 
    <str name="fl">*,score</str> 
    <str name="indent">on</str> 
    <str name="start">0</str> 
    <str name="q">test</str> 
    <str name="hl.fl"/> 
    <str name="qt"/> 
    <str name="wt"/> 
    <str name="fq"/> 
    <str name="version">2.2</str> 
    <str name="rows">10</str> 
    </lst> 
    </lst> 
    <result name="response" numFound="0" start="0" maxScore="0.0"/> 
    </response> 

使用字符串作出同样的查询超过100个结果。

如何在Solr管理页面中查询返回与在Rails应用程序中进行的查询相同的项目?

回答

2

上Jayendra的回答来扩展位(这基本上是正确的):

如果我尝试使用比*:*其他诸如test字符串进行查询,不返回任何结果......

该查询正在针对defaultSearchField运行,默认情况下为text在太阳黑子中。然而令人困惑的是,太阳黑子不会将任何东西放入text字段,所以您的搜索结果是正确的。 text字段中没有test字段的文档,因为没有text字段的文档。

您可能有一个title_text字段。您可以直接用q=title_text:test查询该字段。

您还可以模仿太阳黑子的查询:使用DisMax查询解析器,明确指定要在qf中查询的字段。如果您想查询多个文本字段,这很有帮助,更不用说接收DisMax的其他好处:q=test&defType=dismax&qf=title_text+body_text

此外,太阳黑子会将其查询记录到development.log,这是查找示例的好地方。

+0

谢谢。很好的说明 –

3

*:*基本上会搜索所有的字段,因此匹配所有文档。

你在Rails应用程序上搜索什么字段?
默认情况下,通过Solr admin进行的查询在默认搜索字段(schema.xml)上触发。

<defaultSearchField>text</defaultSearchField> 

试着改变你对solr的查询到特定的领域例如q=some_field:test并检查是否返回结果。

+0

感谢您的帮助 –