簡體   English   中英

Solr / Jetty混淆 - 如何獲得持久服務?

[英]Solr/Jetty confusion - how to get persistent service?

我在Ubuntu 12.04上,使用jetj(9_M4),solr(4.0.0)通過django-haystack(2.0beta)安裝在django 1.4.2站點中。

由於django-haystack在Ubuntu上運行solr 4.0並且運行起來很少,所以我不得不通過箍來實現這一目標。 但它有多難?

我主要的困惑在於Jetty正在做什么,以及Solr在做什么。

所以,我通過本教程安裝了Jetty ,對init文件進行了一些小調整, 正如我在該教程的注釋中所說的那樣 Jetty現在正在運行,即使重啟后我也能在瀏覽器中看到它。

大。

再次通過本教程安裝Solr並進行調整。 代替:

cp -R apache-solr-4.0.0/example/solr /opt

我用:

cp -R apache-solr-4.0.0/example/* /opt/solr/

因此將以下內容添加到/ etc / default / jetty:

JAVA_OPTIONS="-Dsolr.solr.home=/opt/solr/solr $JAVA_OPTIONS"

我不能完全記住我為什么這樣做,但當時有一個原因。 那時候我停止使用那個教程,因為我不太了解core的solr概念,而且我已經對這是多么令人煩惱而感到慌亂。

(對於上下文,當我在大約6個月前使用solr 3.5設置django-haystack 2.0時,它非常簡單,並且不需要單獨的碼頭安裝 - 所有這些都花了我大約兩個小時)

無論如何,我回到我的Django安裝,創建schema.xml,使stopwords-en.txt更改,將其復制到/ opt / solr / solr / collection1 / conf。

我編輯/opt/solr/solr/collection1/conf/solrconfig.xml以刪除對updateLog的引用,因為我為schema.xml添加版本字段所做的任何嘗試都因某種字符錯誤而失敗。 有關詳細信息,請參閱此處(lucene -solr-user郵件列表)此處(django-haystack github)

最后,我進入/ opt / solr並運行它:

sudo java -jar start.jar

BA-DA-熱潮! 我得到了一些結果(當我去我的django網站並使用我設置的搜索時)。 太棒了。 這真的很棒。 現在我只需要啟動solr持久化。

我創建一個如下所示的/ etc / init / solr:

description     "Solr Search Server"

# Make sure the file system and network devices have started before
# we begin the daemon
start on (filesystem and net-device-up IFACE!=lo)

# Stop the event daemon on system shutdown
stop on shutdown

# Respawn the process on unexpected termination
respawn

# The meat and potatoes
exec /usr/bin/java -jar /opt/solr/start.jar >> /var/log/solr.log 2>&1

我沒有重啟服務器 - 我可以看到solr正在運行,但我在django搜索中沒有得到任何結果。

我刪除了init文件並嘗試再次從cli運行 - 是的,很好。

所以,我的問題是:

  1. 我到底做錯了什么?

  2. 我怎樣讓solr在啟動時啟動並重新生成如果它意外死亡並通過我的Django / haystack接口產生結果

  3. 為什么我需要同時運行jetty和solr,以及/opt/jetty/webapps/solr.war與我的/ opt / solr的關系是什么? 我是否會造成沖突?

  4. 為什么solr 3.5這么容易,現在這么困難? 我誠實地問這個問題 - 我不想要solr開發人員的借口或解釋清單 - 我想知道我的理解如何在第一個實例(solr 3.5)中受到如此限制並讓它在兩小時內運行,為什么我現在需要全面深入了解jetty / solr架構和cli / shell腳本黑客才能讓它運行?

我不承諾得到你所有的東西,但(數字與問題不符):

1)Jetty是一個Web服務器。 Solr在該Web服務器中作為(Web)應用程序運行,但是:

2)Jetty還可以運行嵌入式Web服務器,這是Solr下載的工作方式。 當您執行java -jar start.jar時,它運行Jetty並預先配置了所有內容。 在這種情況下,您不需要獨立的Jetty。 我建議從嵌入式Jetty開始,然后切換到外部Jetty。 但是,如果只有您的本地應用程序與本地Solr服務器通信,您可以在不需要完整Jetty的情況下獲得相當遠的距離。

3)您不需要在示例目錄中找到的所有內容 - 它具有多個配置和支持文件,並且有點嵌套(這令人困惑)

4)開始你需要兩件事:運行solr; 你的配置目錄

5)讓Solr運行的最簡單方法是將整個distrubution目錄(我知道 - 大)放在某處(例如/ opt / solr)。

6)您的配置目錄非常簡單。 你只需要兩個文件即可開始,如果你對名字挑剔則有三個: - (無論在哪里,但要確保Solr可以在那里讀/寫) - solr.xml(如果你選擇集合名稱,否則你可以跳過它) - collection1 /(那是默認名稱,你可以在solr.xml中更改它) - collection1 / conf /(這是配置目錄,Solr會在你啟動后將數據目錄添加到同一級別)schema.xml - collection1 / conf / shema.xml - collection1 / conf / solrconfig.xml

7)然后,您需要在示例目錄中運行java -Dsolr.solr.home = start.jar。 這將使所有部分在端口上運行並運行:8983。 Solr 4有一個非常新的管理界面,所以請用你的瀏覽器訪問它,也許做教程等。

如果您需要有關最小功能架構/ solrconfig文件的幫助,請單獨詢問,但您不能只使用示例目錄中的那些,因為它具有fieldType分析器中的所有其他文件引用(盡管您可以只注釋這些行)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM