查询Solr而不指定字段名称

lf5gs5x2  于 2022-11-05  发布在  Solr
关注(0)|答案(6)|浏览(264)

我是第一次使用Solr,我一定遗漏了什么。
在示例模式中,我还没有涉及太多内容,我导入了一些示例数据,还设置了LocalSolr,看起来运行得很好。
我的问题只是一般的Solr查询。我有一个文档,其中的name字段被设置为**tom。**我一直在查看配置文件,但我就是找不到哪里出错了。一堆字段被索引和存储,我可以在admin中看到值,但我无法使查询正常工作。我尝试了各种查询(http://server.com/solr/select/?q=value),结果如下:


**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)

我想让第一个案例(?q=tom)工作。任何关于什么可能出错,以及我如何纠正它的输入,都将不胜感激。

cgvd09ve

cgvd09ve1#

在schema.xml中将<defaultSearchField>设置为name
解析查询时,Solr使用<defaultSearchField>来确定在未使用显式字段名的查询中应搜索哪个字段名。
您可能还想 checkout (e)dismax

i2byvkas

i2byvkas2#

我刚刚遇到了一个类似的问题...也就是说,我定义了多个字段(schema.xml中不存在)来描述我的文档,并希望搜索/查询文档的多个字段,而不仅仅是其中的一个字段(如上面提到的示例中的“name”)。
为了实现这一点,我创建了一个新字段(“compoundfield”),然后在其中放置/copyField我定义的字段(就像Solr发行版附带的schema.xml文档中的“text”字段一样)。

  • 化合物字段定义:*
<field name="compoundfield" type="text_general" indexed="true" stored="false" multiValued="true"/>
  • 默认搜索字段:*
<!-- 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"/>

这对我来说很好用,但我不确定这是否是进行这样一个“多字段”搜索的最好方法...
干杯干杯干杯

64jmpszr

64jmpszr4#

当前的解决方案在新版本的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内部
注在编写本文时,我使用的是非托管模式和solr7.0.0

gc0ot86w

gc0ot86w5#

浏览solr教程绝对值得您花时间:http://lucene.apache.org/solr/tutorial.html
我猜“name”字段没有索引,所以你不能搜索它。你需要改变你的模式,使它有索引。
还要确保你的XML与模式一致,所以如果你在XML中添加了一个名为“name”的字段,但是模式不知道它,那么Solr会忽略这个字段(即它不会被“存储”或“索引”)。
祝你好运

3df52oht

3df52oht6#

好吧,尽管设置一个默认的搜索字段是非常有用的,我不明白为什么你不只是使用solr查询语法:

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


你的名字是什么?你的名字是什么?

相关问题