2010-01-27 115 views
9

我是使用Solr的新手,我必須缺少一些東西。在沒有指定字段名稱的情況下查詢Solr

我在示例模式中沒有涉及太多,我導入了一些示例數據。我也設置了LocalSolr,這似乎運作良好。

我的問題是一般查詢Solr。我有一個文件,其中名稱字段設置爲湯姆。我一直在看配置文件,我只是無法弄清楚我要去哪裏。一堆字段被索引並存儲,並且我可以在管理中看到這些值,但我無法查詢正常工作。我已經試過各種查詢(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)工作。任何可能出錯的輸入,以及我如何糾正它,將不勝感激。

回答

13

設置<defaultSearchField>name在schema.xml中

解析查詢時<defaultSearchField>所使用的 Solr的識別 哪些字段名稱應該在 查詢,其中一個顯式搜索字段名稱 尚未使用。

您可能還想檢出(e)dismax

+0

好!這正是我所需要的。我之前沒有看到這個選項,現在有一堆指向大型「文本」字段的複製字段是合理的。非常感謝! – 2010-01-27 12:03:19

+0

我已經在我的solconfig.xml文件中更改了它,我正在使用SOLR 7.2.0 – 2018-01-04 10:19:49

0

通過Solr的教程去,這絕對值得你的時間: http://lucene.apache.org/solr/tutorial.html

我的猜測是,「名稱」字段不被索引,所以你不能搜索就可以了。你需要改變你的模式來使它索引。

還要確保您的XML實際上與模式對齊。所以,如果你在xml中添加一個名爲「name」的字段,但是schema不知道它,那麼Solr會忽略該字段(即它不會被「存儲」或「索引」)。

好運

+1

字段絕對索引。另外,如果不是,我不能做一些我列出的查詢,對吧?像名字:湯姆不會工作,如果我理解文檔。 – 2010-01-27 02:12:05

+0

對Mauricio是否正確,您需要指定solrconfig中的defaultSearchField。此外,如果您正在使用DisMax(這將允許?q = tom同時在多個字段中進行搜索),還有另一個名爲「qf」的設置。 – mlathe 2010-01-27 06:28:22

0

好,儘管設置默認搜索領域是非常有用的,我不明白你爲什麼不只是使用Solr的查詢語法:

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

..... ../?q= & FQ =名稱:湯姆

+0

好,錯過了閱讀標題:-( – Lici 2010-01-27 16:53:50

6

我只是碰到了類似問題就來了......也就是說我已經定義了多個字段(未在schema.xml中存在)來形容我文件,並且想要搜索/查詢文檔的多個字段不僅是其中的一個字段(如上述示例中的「名稱」)。

爲了實現這一點,我創建了一個新字段(「compoundfield」),然後將/ copyField放入我定義的字段中(就像Solr分發附帶的schema.xml文檔中的「text」字段一樣)。這導致了這樣的事情:

coumpoundfield定義:

<field name="compoundfield" type="text_general" indexed="true" stored="false" multiValued="true"/> 

defaultSearchField:

<!-- 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"/> 

這工作對我很好,但我不知道這是否是最好的方式做出這樣「多領域」查尋...

乾杯!

1

目前的解決方案是在lucene的/ solr的較新版本的棄用。要更改默認搜索字段要麼使用df參數或更改領域:

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

我使用一個非管理模式和Solr 7.0.0當時solrconfig.xml

注意裏面寫作

相關問題