Solr Index似乎有效 - 但不返回任何结果

时间:2010-08-16 13:20:35

标签: lucene solr lucene.net solrnet

Solr新手在这里。

我创建了一个Solr索引并将一大堆文档写入其中。我可以看到 从Solr管理页面,文档存在,架构也很好。 但是当我使用测试关键字执行搜索时,我没有得到任何结果。

  1. 输入*:*

    进入查询(在Solr管理页面中)我得到了所有结果。

  2. 但是,当我输入任何其他查询(例如术语或短语)时,我没有得到任何结果。 我已经验证正在查询的字段是索引并包含我要搜索的值。

  3. 所以我很困惑我做错了什么。

5 个答案:

答案 0 :(得分:13)

可能您没有正确设置<defaultSearchField>。请参阅this question

另一种可能性:您的字段属于string,而不是text。与文本字段不同,字符串字段不会被分析,而是逐字存储和索引。

答案 1 :(得分:0)

我在使用 Solr 8 的新设置时遇到了同样的问题。接受的答案不再有效,因为<defaultSearchField>配置将be deprecated

由于我没有找到关于Solr为什么尽管被索引仍不从任何字段返回结果的答案,所以我查阅了查询文档。我发现的是DisMax查询解析器:

DisMax查询解析器旨在处理用户输入的简单短语(无复杂语法),并根据每个字段的重要性使用不同的权重(提升)在多个字段中搜索单个术语。其他选项使用户可以根据每种用例的特定规则(独立于用户输入)来影响得分。

相比之下,默认的Lucene解析器仅讲搜索一个字段。所以我尝试了一下DisMax,效果很好!

查询示例:

http://localhost:8983/solr/techproducts/select?defType=dismax&q=video

您还可以指定要精确搜索的字段,以防止产生不必要的副作用。多个字段用空格分隔,这些空格在URL中转换为+

http://localhost:8983/solr/techproducts/select?defType=dismax&q=video&qf=features+text

最后但并非最不重要的一点是,为字段赋予权重:

http://localhost:8983/solr/techproducts/select?defType=dismax&q=video&qf=features^20.0+text^0.3

如果像我一样使用pysolr,则可以将这些参数添加到搜索请求中,如下所示:

results = solr.search('search term', **{
    'defType': 'dismax',
    'qf': 'features text'
})

答案 2 :(得分:0)

就我而言,问题在于查询的格式。默认情况下,我的设置似乎与该字段的整个值完全匹配。因此,为了在我搜索 sit 时获得结果,我必须查询 *sit*,即使用通配符来获得预期结果。

答案 3 :(得分:-1)

使用solr 4,我必须根据Mauricio的答案解决这一问题,方法是将type="text_en"定义为该字段。

答案 4 :(得分:-1)

使用solr 6,使用text_general。