2012-03-12 116 views
1

Solr的負載信息,我有700.000街道名稱,8111個直轄市名稱和80333和本地郵政編碼。我想索引所有這些信息。用戶希望通過ajax自動填充表單來搜索這些信息。我用很少的數據證明了它,並且ajax自動完成形式的行爲可以。沒有數據導入處理程序

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" 
      ignoreCase="true" 
      words="stopwords.txt" 
      enablePositionIncrements="true" 
      /> 
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.StopFilterFactory" 
      ignoreCase="true" 
      words="stopwords.txt" 
      enablePositionIncrements="true" 
      /> 
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
    </analyzer> 
</fieldType> 

所有的數據加載到Solr的

  • 時,問題發生,我應該如何加載信息Solr的服務器(我在一個Grails應用程序是,我需要加載具有實例信息沒有數據輸入處理程序)今天我已經好幾個小時,今天做到這一點,最後grails控制檯崩潰:( - >我應該使用grails腳本,而不是做一個服務,並用grails控制檯執行它?
  • 或應該我使用數據輸入處理程序來加載它更快?我可以從不同ta的不同列連接字符串值與數據輸入處理程序?

(這沒關係對每一個(700.000 + 8111個+ 80.333文件)?不同的文檔)

感謝您的時間

回答

1

我假設你的城市,街道名稱和發佈代碼應該分別自動完成。在這種情況下,你會使用一個單獨的solr core的每一個。

或者我應該使用數據輸入處理程序加載它更快?

DIH將會非常快,只要這些信息沒有經常改變,這樣做應該沒問題。

我可以使用數據輸入處理程序將不同列的不同列中的字​​符串值連接起來嗎?

是的;在data-config.xml你給特定SQL查詢,並可以使用數據庫的本地連接(例如,在Oracle ||)。

+0

市政,街道名稱和郵政編碼應該自動完成相同的ajax形式。多個解決方案核心將是有用的,以提出其他類型的建議,例如產品建議,然後我會有一個solr核心的location_suggestions和另一個核心的product_suggestions ...這種方法是否正確? – 2012-03-13 14:51:10

+0

如果它是相同的*表格*,您仍然可以使用多個內核;你的意思是同一個**字段**嗎? – beerbajay 2012-03-13 14:59:28

+0

是的,現在我正在使用相同的字段來索引所有的位置建議。例如:我有一個帶有值爲Barcelona的字段location_suggestion的文檔,另一個帶有值爲Barcelona 08001的location_suggestion的文檔,另一個帶有location_suggestion的文檔巴塞羅那08001 carrer del Tigre ...如果我有多個核心,我必須更改我的查詢?對於8111的結果可能有一個核心是不夠的使用一個單獨的核心?你 – 2012-03-13 15:16:59

1

嚴重的是,寫一個shell腳本,使用curl的更新發送到SOLR。

你正試圖從安裝在漂浮在游泳池中的船上的大炮上將罐頭從牆上射出。你不需要大炮或船隻或游泳池。只需用氣槍站在那裏,一個接一個地播放更新,直到完成。

對於完整的示例SOLR更新的示例shell腳本,請從您附近的鏡像下載SOLR二進制文件apache-solr-3.5.0.tgz或apache-solr-3.5.0.zip。尋找在http://lucene.apache.org/solr/downloads.html

鏡子解壓縮歸檔文件,進入example目錄,並按照下列指示 http://lucene.apache.org/solr/tutorial.html

如果你是在UNIX上,只需使用post.sh.

順便說一下,檢查您的服務器上已安裝的SOLR版本。如果它不是3.50,那麼爲什麼現在使用舊版本,當你有新版本時?

相關問題