Lucene 在不指定字段名的情况下查询Solr

Lucene 在不指定字段名的情况下查询Solr,lucene,solr,localsolr,Lucene,Solr,Localsolr,我对使用Solr还不熟悉,我肯定错过了什么 在示例模式中我还没有涉及太多内容,我导入了一些示例数据。我还设置了LocalSolr,看起来效果不错 我的问题只是一般的查询Solr。我有一个文档,其中name字段设置为tom。我一直在查看配置文件,但我就是不知道哪里出错了。一堆字段被索引和存储,我可以在admin中看到这些值,但我无法让查询正常工作。我尝试了各种查询(),结果如下: **Query:** ?q=tom **Result:** No results **Query:** q=\*:\

我对使用Solr还不熟悉,我肯定错过了什么

在示例模式中我还没有涉及太多内容,我导入了一些示例数据。我还设置了
LocalSolr
,看起来效果不错

我的问题只是一般的查询
Solr
。我有一个文档,其中name字段设置为tom。我一直在查看配置文件,但我就是不知道哪里出错了。一堆字段被索引和存储,我可以在admin中看到这些值,但我无法让查询正常工作。我尝试了各种查询(),结果如下:

**Query:** ?q=tom
**Result:** No results

**Query:** q=\*:\*
**Result:** 10 docs returned

**Query:** ?q=*:tom
**Result:** No results

**Query:** ?q=name:tom
**Result:** 1 result (the doc with name : tom)

我想让第一个箱子开始工作。如果您对可能出现的错误以及我如何纠正错误有任何意见,我们将不胜感激。

阅读solr教程绝对值得您花费时间:

我的猜测是“name”字段没有索引,因此您无法对其进行搜索。您需要更改您的模式,使其成为索引

还要确保您的XML实际上与模式一致。因此,如果您在xml中添加一个名为“name”的字段,但模式不知道它,那么Solr将忽略该字段(即它不会被“存储”或“索引”)

祝你好运

在schema.xml中设置为
name

由 解析查询以确定 应该在哪个字段名中搜索 查询其中包含显式字段名 尚未使用


您可能还想签出。

尽管设置默认搜索字段非常有用,但我不明白您为什么不使用solr查询语法:

......./?q=name:tom


……q=:&fq=name:tom

我刚刚遇到了一个类似的问题。。。也就是说,我定义了多个字段(schema.xml中不存在)来描述我的文档,并希望搜索/查询文档的多个字段,而不是其中的一个(如上面提到的示例中的“name”)

为了实现这一点,我创建了一个新字段(“compoundfield”),然后将/copyField放在我定义的字段中(就像Solr发行版附带的schema.xml文档上的“text”字段一样)。这会导致如下结果:

coumpoundfield定义:


defaultSearchField:


复合场
这对我来说很好,但我不确定这是否是进行“多字段”搜索的最佳方式

干杯

看来 是用于此目的的正确方法


更新版本的lucene/solr不推荐当前解决方案。要更改默认搜索字段,请使用
df
参数或更改以下字段:

  <initParams 
path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">
    <lst name="defaults">
      <str name="df">default_field</str>
    </lst>
  </initParams>

默认_字段
solrconfig.xml文件中


注意:我使用的是非托管模式,在编写本文时,solr 7.0.0肯定对字段进行了索引。而且,如果不是,我也不能做我列出的一些查询,对吗?类似name:tom这样的东西,如果我理解文档的话,是行不通的。是的,毛里西奥说得对,你需要在solrconfig中指定defaultSearchField。另外,如果您使用的是Demax(这将允许?q=tom同时在多个字段中进行搜索),那么还有另一个名为“qf”Nice的设置!这正是我所需要的。我以前没有看到这个选项,现在有一堆复制字段指向一个大的“文本”字段是有意义的。非常感谢!我已经在我的solconfig.xml文件中更改了它,我正在重新考虑使用Solr7.2.0;将copyField用于合并字段可能更简单。
<!-- field for the QueryParser to use when an explicit fieldname is absent -->
<defaultSearchField>compoundfield</defaultSearchField>

<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
<solrQueryParser defaultOperator="OR"/>

<!-- copyField commands copy one field to another at the time a document
    is added to the index.  It's used either to index the same field differently,
    or to add multiple fields to the same field for easier/faster searching.  -->
<!-- ADDED Fields -->
<copyField source="field1" dest="compoundfield"/>
<copyField source="field2" dest="compoundfield"/>
<copyField source="field3" dest="compoundfield"/>
  <initParams 
path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">
    <lst name="defaults">
      <str name="df">default_field</str>
    </lst>
  </initParams>