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