2015-10-26 4 views
1

Я пытаюсь подключиться к серверу solr, используя this учебник. На этом этапе я уверен, что мой solr настроен правильно. Я могу запуститьПодключиться к серверу solr, запущенному на localhost

> solr start -p 8983 

и кажется, что-то запустил.

достаточно уверенный

> solr status 
Solr process 31421 running on port 8983 

Так что теперь в моем питона код, я стараюсь, что я думаю, что должно быть основным сценарий подключения.

import solr 
host = "http://localhost:8983/solr" 

# also tried 
# host = "http://localhost:8983" 

# also tried 
# host = "http://127.0.0.1:8983/solr" 

# also tried 
# host = "http://127.0.0.1:8983" 

connection = solr.SolrConnection(host) 

try: 
    connection.add(
     id= 1, 
     title= "Lucene in Action", 
     author= ['Zack', 'Hank Hill'] 
    ) 
except Exception as e: 
    import pdb 
    pdb.set_trace() 

connection.commit() 

Мой код никогда не делает его к connection.commit(), вместо этого, он попадает в точку отладки в исключения. Глядя на исключение е

HTTP code=404, Reason=Not Found, body=<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
    <title>Error 404 Not Found</title> 
</head> 
<body><h2>HTTP ERROR 404</h2> 
    <p>Problem accessing /solr/update. Reason: 
    <pre> Not Found</pre></p><hr><i><small>Powered by Jetty://</small></i><hr/> 
</body> 
</html> 

Так это выглядит, как клиент питона не находит сервер Solr, в связи с 404? Кажется, это должно быть довольно просто, поэтому я не уверен, где я перепутал здесь. Может кто-то указать мне верное направление?

редактировать: Я добавил этот скрипт, чтобы проверить различные хосты, не идут

hosts = [ 
    'http://localhost:8983/solr', 
    'http://localhost:8983', 
    'http://127.0.0.1:8983/solr', 
    'http://127.0.0.1:8983' 
] 

def connect(host): 
    connection = solr.SolrConnection(host) 
    try: 
     connection.add(
      id= 1, 
      title='Lucene in Action', 
      author= ['Zack Botkin', 'Hank Hill'] 
     ) 
    except: 
     raise 

for host in hosts: 
    try: 
     connect(host) 
    except Exception as e: 
     import pdb 
     pdb.set_trace() 

Каждое исключение одно и то же, 404 ошибка

редактировать 2: Я был в состоянии

> telnet localhost 8983 

и он подключен, поэтому я уверен, что сервер solr работает на этом порту?

+0

Что вы видите, если вы открываете браузер и перейти на тот же URL-адрес "HTTP: // локальный: 8983/Solr"? – Ejaski

+0

Если это удаленный сервер, вы можете использовать wget или curl для проверки доступа к URL-адресу «http: // localhost: 8983/solr». Попробуйте выполнить команду: wget 'http: // localhost: 8983/solr' – Ejaski

+0

ok, да, я открыл «: 8983/solr» внутри браузера и может видеть приложение solr web – Zack

ответ

3

Чтобы индексировать с помощью solr, вам также необходимо создать ядро ​​и не забудьте использовать это ядро ​​в своем URL-адресе. Например, когда Solr Начато запустить эту команду, чтобы создать именованный тест ядра:

Solr создать -c тест

После того, что было создано, вы должны увидеть его в списке на странице Solr администратора. Чтобы использовать его, вы можете просто добавить это имя ядра в свой URL-адрес подключения. Простой пример кода Python:

import solr 

# create a connection to a solr server 
s = solr.SolrConnection('http://localhost:8983/solr/test') 

# add 2 documents to the index 
s.add(id=1, title='Lucene in Action', author=['bob', 'asdf']) 
s.add(id=2, title='test2', author=['Joe', 'test']) 
s.commit() 

# do a search 
response = s.query('joe') 
for hit in response.results: 
    print hit['title'] 

Более подробная информация здесь https://cwiki.apache.org/confluence/display/solr/Running+Solr

+0

, это сделало трюк, просто понадобилось ядро заранее – Zack

Смежные вопросы