2012-08-14 25 views
0

我是3年以來的獅身人面像用戶。我現在變成的問題是集羣和方面的支持。獅身人面像用戶正在切換到Solr

關於方面的支持,我知道我也可以用獅身人面像來支持它,它會運行,集羣對我來說是未來的一個非常大的問題。

我真的很喜歡獅身人面像,因爲它易於使用且速度非常快,但我需要在接下來的幾個月內更改爲Solr。

我想了解一些基本知識,如果有人有時間來解釋我。我將在Sphinx中發佈一些示例,希望你能在Solr給我舉個例子。

至於安裝我已經選擇的Solr和Tomcat在Debian:

的apt-get安裝的Solr-tomcat的捲曲-y

,則該選項與Tomcat的更好(快,穩...),那麼碼頭?兩者都支持集羣嗎?

其次,我已經產生了一個Dataimport處理程序與此:

<dataSource type="JdbcDataSource" 
       driver="com.mysql.jdbc.Driver" 
       url="jdbc:mysql://localhost/database" 
       user="root" 
       password="root" 
     batchSize="-1"/> 

<document name="doc"> 
    <entity name="de_job" 
       query="select * from de_job"> 
     <field column="title" name="title" /> 
    <field column="description" name="description" /> 
    <field column="job_id" name="id" /> 
    </entity> 
</document> 

當我打電話:

http://domain.com:8080/solr/dataimport?command=full-import

然後我有指數比1,6M數據行5分鐘。這很棒。

這裏是我的問題,現在:

  1. 我有獅身人面像多於1個指數,並希望他們重新索引在不同的時間,而不是一次。

    index de_jobs 
    { 
    source     = de_jobs 
    path     = /usr/local/sphinx/var/data/jobs_de 
    docinfo     = extern 
    charset_type   = utf-8 
    charset_table   = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, \ 
           U+430..U+44F,U+C5->U+E5, \ 
           U+E5, U+C4->U+E4, U+E4, U+D6->U+F6, U+F6, U+16B, U+0c1->a, U+0c4->a, U+0c9->e, U+0cd->i, \ 
           U+0d3->o, U+0d4->o, U+0da->u, U+0dd->y, U+0e1->a, U+0e4->a, U+0e9->e, U+0ed->i, U+0f3->o, \ 
           U+0f4->o, U+0fa->u, U+0fd->y, U+104->U+105, U+105, U+106->U+107, U+10c->c, U+10d->c, \ 
           U+10e->d, U+10f->d, U+116->U+117, U+117, U+118->U+119, U+11a->e, U+11b->e, U+12E->U+12F, \ 
           U+12F, U+139->l, U+13a->l, U+13d->l, U+13e->l, U+141->U+142, U+142, U+143->U+144, \ 
           U+144,U+147->n, U+148->n, U+154->r, U+155->r, U+158->r, U+159->r, U+15A->U+15B, U+15B, \ 
           U+160->s, U+160->U+161, U+161->s, U+164->t, U+165->t, U+16A->U+16B, U+16B, U+16e->u, \ 
           U+16f->u, U+172->U+173, U+173, U+179->U+17A, U+17A, U+17B->U+17C, U+17C, U+17d->z, \ 
           U+17e->z, U+DC->U+FC, U+DF, U+FC, 
    min_word_len   = 3 
    min_infix_len   = 7 
    stopwords    = /usr/local/sphinx/var/stopwords/stop_words_de.txt 
    
    } 
    
    index at_jobs 
    { 
    source     = at_jobs 
    path     = /usr/local/sphinx/var/data/jobs_at 
    docinfo     = extern 
    charset_type   = utf-8 
    charset_table   = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, \ 
           U+430..U+44F,U+C5->U+E5, \ 
           U+E5, U+C4->U+E4, U+E4, U+D6->U+F6, U+F6, U+16B, U+0c1->a, U+0c4->a, U+0c9->e, U+0cd->i, \ 
           U+0d3->o, U+0d4->o, U+0da->u, U+0dd->y, U+0e1->a, U+0e4->a, U+0e9->e, U+0ed->i, U+0f3->o, \ 
           U+0f4->o, U+0fa->u, U+0fd->y, U+104->U+105, U+105, U+106->U+107, U+10c->c, U+10d->c, \ 
           U+10e->d, U+10f->d, U+116->U+117, U+117, U+118->U+119, U+11a->e, U+11b->e, U+12E->U+12F, \ 
           U+12F, U+139->l, U+13a->l, U+13d->l, U+13e->l, U+141->U+142, U+142, U+143->U+144, \ 
           U+144,U+147->n, U+148->n, U+154->r, U+155->r, U+158->r, U+159->r, U+15A->U+15B, U+15B, \ 
           U+160->s, U+160->U+161, U+161->s, U+164->t, U+165->t, U+16A->U+16B, U+16B, U+16e->u, \ 
           U+16f->u, U+172->U+173, U+173, U+179->U+17A, U+17A, U+17B->U+17C, U+17C, U+17d->z, \ 
           U+17e->z, U+DC->U+FC, U+DF, U+FC, 
    min_word_len   = 3 
    min_infix_len   = 7 
    stopwords    = /usr/local/sphinx/var/stopwords/stop_words_de.txt 
    
    } 
    

如何啓用Solr的2個或多個不同的索引?

這是不同的實體在下面的表格?

<entity name="de_job" 
       query="select * from de_job"> 
     <field column="title" name="title" /> 
    <field column="description" name="description" /> 
    <field column="job_id" name="id" /> 
    </entity> 

<entity name="at_job" 
       query="select * from at_job"> 
     <field column="title" name="title" /> 
    <field column="description" name="description" /> 
    <field column="job_id" name="id" /> 
    </entity> 
  1. 我怎樣才能重新編制只有一個指數?在重新索引查詢中是否有任何參數: http://domain.com:8080/solr/dataimport?command=full-import例如,哪裏僅選擇de_job?

  2. 我在獅身人面像:min_word_len和min_infix_len。如何在Solr中使用它?我可以在哪裏配置它?

  3. 我在獅身人面像自定義停用詞定義。如何在Solr中爲每個索引定義和使用它們?

  4. 在sphinx中,我必須定義charset_table,因爲sphinx無法搜索德語Umlauts或其他UTF-8字符(如果它們未由charset_table轉換)。我是否需要Solr中的相同內容?

  5. 在索引時我旋轉一個索引,然後獅身人面像正在創建一個tmp文件,重新索引數據和旋轉它的飛行。通過這種方式,我的應用程序正在運行,獅身人面像正在重新編排一切。如何用Solr解決這個問題?當我看的Solr的日誌文件,當索引正在重建,則住:

刪除所有單據從index

什麼是不好的,因爲在當時我的應用程序將無法正常工作。我怎樣才能以優雅的方式解決這個問題?

+0

如果你均值聚類在http://wiki.apache.org/solr/ClusteringComponent(我不使用的Solr所以不知道是否有其他事情) - 它似乎只是使用Carrot2。我用胡蘿蔔2和獅身人面像一起很好。就像solr與Carrot2分離一樣,獅身人面像也可以保持獨立。 Carrot2有一個「文件聚類服務器」,可以很容易地啓動一個carrot2實例。然後你的應用程序可以調用它 - 使用獅身人面像的結果。 – barryhunter 2012-08-14 16:40:03

+0

這是一個使用sphinx進行搜索的基本演示,然後與Carrot2進行了集成http://nearby.org.uk/geograph/cluster-search.php?q=TQ5050 – barryhunter 2012-08-14 16:44:40

回答

0
  1. 爲每個索引創建單獨的核心。然後每個人都有自己的數據導入URL。

  2. (a)min_word_len,忽略這個,不需要。 (b)min_infix_len,現在可以忽略,除非你執行通配符查詢。如果你這樣做,那麼考慮使用Ngrams。

  3. 在您的模式中,定義一個停用詞過濾器並將您的停用詞置於一個文件中。更好的是,不要使用停用詞。這些都是32位計算機和40兆字節磁盤遺留的壞習慣。

  4. 您可以在模式中使用ISOLatin1AccentFilterFactory(http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters/#solr.ISOLatin1AccentFilterFactory)。

  5. 這是正常的,刪除實際上不會發生,直到索引完成,新的內容被提交。

+0

嗨Walter,感謝您的快速回答。我現在有兩個問題:要點1:如何定義,哪個核心是索引?你有我的例子嗎?第5點:手段,它像獅身人面像一樣工作嗎?它會在reindex期間顯示舊信息? – 2012-08-14 21:09:22

+0

Solr核心是一個Solr服務器內部的獨立搜索配置。更多信息:http://wiki.apache.org/solr/CoreAdmin是的,搜索在索引過程中不會中斷。 – 2012-08-15 15:17:25