2013-02-22 47 views
2

我對SOLR很熟悉。SOLR - 在模式中使用單個文本字段進行全文搜索

我想使用SOLR進行多種實體的全文搜索。我不想爲每種不同類型的實體創建文檔。我不希望能夠搜索特定的字段。我只對如果指定的字符串在任何項目中的任何地方感興趣。

在數據庫方面,例如我有一個表新聞和一個表員工,我想搜索單詞'蘋果',我不介意在哪個領域,我只想取回數據庫ID來自包含它的記錄。

難道是一個解決方案,我用一個Solr模式是這樣的:

<fields> 
    <field name="id" type="string" indexed="true" stored="true"/> 
    <field name="content" type="text" indexed="true" stored="false"/> 
</fields> 

所以,我只需要一個ID和內容。我把所有的數據都放入了我想要搜索到的內容字段中。當我搜索一些單詞時,它會在'id'和int'content'中查找它。

這是一個好主意?任何性能或設計問題?

感謝, 塔馬斯

回答

3

https://wiki.apache.org/solr/SchemaXml#Copy_Fields。它說:

一個常見的要求是將所有輸入字段複製或合併到單個solr字段。這可以通過以下方式完成: -

<copyField source="*" dest="text"/> 

這通常是通過多個字段進行搜索。

但是,如果您甚至不想要原始字段,只需將所有字段連接到Solr中的一個大字段content和索引中。這應該沒有問題。

0

您可以將文本複製到文本(請參閱發行版中的示例),並將其設置爲默認字段(solrconfig.xml中的選項處理程序中的「df」參數)。或者,如果您預計更復雜的要求和/或非文本搜索,我建議您查看eDismax with qf parameter,它會處理搜索所有這些字段本身。