我是第一次使用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)
工作。任何关于什么可能出错,以及我如何纠正它的输入,都将不胜感激。
6条答案
按热度按时间cgvd09ve1#
在schema.xml中将
<defaultSearchField>
设置为name
解析查询时,Solr使用
<defaultSearchField>
来确定在未使用显式字段名的查询中应搜索哪个字段名。您可能还想 checkout (e)dismax。
i2byvkas2#
我刚刚遇到了一个类似的问题...也就是说,我定义了多个字段(schema.xml中不存在)来描述我的文档,并希望搜索/查询文档的多个字段,而不仅仅是其中的一个字段(如上面提到的示例中的“name”)。
为了实现这一点,我创建了一个新字段(“compoundfield”),然后在其中放置/copyField我定义的字段(就像Solr发行版附带的schema.xml文档中的“text”字段一样)。
这对我来说很好用,但我不确定这是否是进行这样一个“多字段”搜索的最好方法...
干杯干杯干杯
gkl3eglg3#
看起来DisMax parser是适合这个目的的。
Related stackoverflow thread here.
64jmpszr4#
当前的解决方案在新版本的lucene/solr中已被弃用。要更改默认搜索字段,请使用
df
参数或更改以下位置的字段:在
solrconfig.xml
内部注在编写本文时,我使用的是非托管模式和solr7.0.0
gc0ot86w5#
浏览solr教程绝对值得您花时间:http://lucene.apache.org/solr/tutorial.html
我猜“name”字段没有索引,所以你不能搜索它。你需要改变你的模式,使它有索引。
还要确保你的XML与模式一致,所以如果你在XML中添加了一个名为“name”的字段,但是模式不知道它,那么Solr会忽略这个字段(即它不会被“存储”或“索引”)。
祝你好运
3df52oht6#
好吧,尽管设置一个默认的搜索字段是非常有用的,我不明白为什么你不只是使用solr查询语法:
或
你的名字是什么?你的名字是什么?