我开始与Solr整合并遇到了我认为的问题。我使用java API上传了一个简单的电子表格(这是一个施加:
- Document, id, value
- Excel3, name, steelers
- Excel3, subject, pirates
- Excel3, description, penguins
- Excel3, comments, panthers
- Excel3, author, panthers
)
使用这个我使用第一列作为“文档名称”,第二列作为索引文档中的字段,第三列作为索引数据。所有这些字段都已存在于schema.xml中,但以下是它们的设置方式:
<field name="id" type="string" indexed="true" stored="true" required="true" />
<field name="name" type="text_general" indexed="true" stored="true"/>
<field name="subject" type="text_general" indexed="true" stored="true"/>
<field name="description" type="text_general" indexed="true" stored="true"/>
<field name="comments" type="text_general" indexed="true" stored="true"/>
<field name="author" type="text_general" indexed="true" stored="true"/>
现在这里是我的问题发挥作用的地方。我搜索说steelers,它回来很好,但如果我寻找企鹅,或许多其他领域,它不会撤回任何结果。但是,如果我做描述:企鹅,结果会像预期的那样回落。
任何人都可以帮助我理解为什么某些领域需要以前的部分,而不是其他领域的部分?
示例搜索: solr / select?indent = on&amp; q = penguins&amp; wt = xml ----不返回任何结果
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
<lst name="params">
<str name="indent">on</str>
<str name="q">penguins</str>
<str name="wt">xml</str>
</lst>
</lst>
<result name="response" numFound="0" start="0"/>
</response>
的solr /选择缩进= ON&安培; Q =描述:企鹅&安培;重量= XML
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">18</int>
<lst name="params">
<str name="indent">on</str>
<str name="q">description:penguins</str>
<str name="wt">xml</str>
</lst>
</lst>
<result name="response" numFound="1" start="0">
<doc>
<str name="author">panthers</str>
<str name="comments">panthers</str>
<str name="description">penguins</str>
<str name="id">Excel3</str>
<str name="name">steelers</str>
<str name="subject">pirates</str>
</doc>
</result>
</response>
答案 0 :(得分:2)
默认查询解析器将查询默认字段,该字段可在 schema.xml 中指定,如下所示:http://wiki.apache.org/solr/SchemaXml#The_Default_Search_Field
我认为@Frank Famer关于使用DisMax解析器的评论是解决这个问题的真正方法。也就是说,这是我在实践中看到的两种解决方法:
1.创建另一个索引(未存储)的copyField,其中包含要搜索的所有字段中的值,然后将该字段指定为默认值。它在 schema.xml 文件中看起来像这样。
<field name="myhugedefaultfield" type="text" indexed="true" stored="false" multiValued="true"/>
<copyField source="name" dest="myhugedefaultfield"/>
<copyField source="subject" dest="myhugedefaultfield"/>
<copyField source="description" dest="myhugedefaultfield"/>
<defaultSearchField>myhugedefaultfield</defaultSearchField>
2.更改用户编辑的语法并将企鹅的查询转换为查询(名称:企鹅)OR(主题:企鹅)OR(描述:企鹅)