2011-11-30 68 views
2

我在使用Solr搜索某些字段时遇到困难。我使用Solarium作为PHP代码和Apache Solr Search Server之间的“桥梁”。无法在Solr中搜索字段

当我在“product_name”上执行搜索时,它会成功返回,但是如果我在style_colour或style_number上搜索它则不会。我已经在架构中将这两个字段“编入索引”,AFAIK使它们成为可搜索的。

任何人都可以建议我在这里做错了吗?

模式:

<field name="product_name" type="text_general" indexed="true" stored="true"/> 
<field name="style_colour" type="string" indexed="true" stored="true"/> 
<field name="style_number" type="string" indexed="true" stored="true"/> 

从Solr管理结果 “让我的一切” 查询:

<result name="response" numFound="1071" start="0"> 
    <doc> 
    <str name="product_name">Farls</str> 
    <str name="style_colour">01701901701931</str> 
    <str name="style_number">017019</str> 
    </doc> 
    ... 
+0

你如何查询这些字段?你的默认搜索字段是什么? – Jayendra

+0

@Jayendra我怎样才能检查我的默认搜索字段是什么? – crmpicco

+1

schema.xml文件应该提到defaultsearchfield,通常是文本字段。你是否也在查询特定的字段? solrconfig.xml中的任何特定请求处理程序?额外的细节将有助于提供合适的答案。 – Jayendra

回答

2

添加您的模式下 -

<copyField source="product_name" dest="text"/> 
<copyField source="style_colour" dest="text"/> 
<copyField source="style_number" dest="text"/> 

此外,确保字段文本在您的模式中定义。
需要重新为您的数据重新编制索引。
使用标准请求处理程序,您的查询将搜索三个字段。

+0

我追踪并解决了这个问题,因为我使用的是日光浴室,所以我不得不深入到这个代码中,并发现'Solarium_Client_Request_Select'类将接受我给它的查询字段:'$ this-> addParam('qf ',$ component-> getQueryFields());'。这是用addDisMax方法找到的(我实际上使用eDisMax)以前,我发现我不是通过style_number传递的,所以让它变得不可测。我现在添加了这个,现在它已经变得可搜索。非常感谢您的帮助。 – crmpicco

+0

@crmpicco也许你可以添加自己的答案并接受它... – javanna

+0

@javanna完成。谢谢。 – crmpicco