2012-03-05 39 views
2

我正在使用Apache Solr ..我有以下場景..:同一個Solr Core中的多個索引..?

我在PostGreSQL數據庫中有兩個表。一個是「汽車」。另一種是 「經銷商

現在我有一個汽車像下面這樣的數據-config文件:

<document name="offerings"> 
    <entity name="jc_offerings" query="select * from jc_offerings" > 
     <field column="id" name="id" /> 
     <field column="name" name="name" /> 
     <field column="display_name" name="display_name" /> 
     <field column="extra" name="extra" /> 
    </entity> 
</document> 

我有一個類似的數據 - 配置。 xml for「經銷商」。它具有相同的域汽車:名稱,額外

我Schema.xml的

現在,我已經定義了以下字段:

<fields> 
    <field name="id" type="string" indexed="true" /> 
    <field name="name" type="name" indexed="true" /> 
    <field name="extra" type="extra" indexed="true" /> 

    <field name="CarsText" type="text_general" indexed="true" 
    stored="true" multiValued="true"/> 
</fields> 

<uniqueKey>id</uniqueKey> 
<defaultSearchField>CarsText</defaultSearchField> 
<copyField source="name" dest="CarsText"/> 
<copyField source="extra" dest="CarsText"/> 

現在我想搜索,如:「這裏的名字是馬魯蒂「..那麼,Solr如何知道是否搜索:::汽車領域:名稱或經銷商字段」名稱「.. ??

我已閱讀以下鏈接:http://wiki.apache.org/solr/MultipleIndexes

,但我無法理解是怎麼工作..?

讀取鏈接後:我在汽車經銷商取得另一場 * 數據-config.xml中 * ..喜歡的東西:

<field name="type" value="car" /> : in Cars date-config.xml 

<field name="type" value="dealer" /> : in Cars date-config.xml 

然後在Schema.xml中我創建了一個新字段:

<field name="type" type="string" indexed="true" stored="true" /> 

然後我問類似:

localhost:8983/solr/select?q=name:Maruti&fq=type:dealer

但力曾任職.. !!

那麼,我該怎麼做.. ??

回答

5

如果字段是既有轎車和經銷商一樣,你可以使用一個索引,象這樣定義的對象:

<fields> 
    <field name="id" type="string" indexed="true" stored="true"/> 
    <field name="name" type="name" indexed="true" stored="true" /> 
    <field name="extra" type="extra" indexed="true" stored="true" /> 
    <field name="description_text" type="text_general" indexed="true" stored="true" multiValued="true"/> 
    <field name="type" type="string" indexed="true" stored="true" /> 
</fields> 

這會爲這兩款車和經銷商(所以你不需要工作有2個索引),你會使用「類型」字段來理清如果你想要一個「經銷商」或「汽車」(我使用相同的系統過濾出類似類型的對象只有一個小「 semanthical「的差異)

此外,您還需要將stored =」true「添加到要檢索的字段,否則您將只能使用它們進行搜索(因此該索引=」true「)

+0

你是否仔細閱讀我的問題.. ?? ..我tld,我已經這樣做..但事實是:它不工作..當我查詢的類型,沒有出現在結果..我該怎麼辦 ?? – 2012-03-05 10:55:09

+0

我仔細閱讀你的問題,即使它不是完美的英語。據我所知,你仍然有多個索引。你應該把所有東西都合併成一個索引,按照我的例子。您的字段「類型」也有2個默認值,分爲兩個索引。另外,當你查詢「Maruti」而沒有其他的時候,輸出是什麼? – 2012-03-05 11:34:50

+0

在你的例子中:你提到的「type」字段..現在如果你寫「fq = type:Samuele」..什麼時候出現.. ?? ..你需要定義類型的地方..像「汽車」或「經銷商「..和SOLR應該能夠知道有多少類型可用..你是否已經達到了......? – 2012-03-05 11:45:23

2

將默認值添加到類型字段將確保將類型值設置爲cars|dealer

您將不得不單獨編制索引。然後使用複製字段,您可以很容易地過濾cars|dealer

這看起來有點棘手,在上面提到的多索引鏈接中沒有很好地解釋。

相關問題