2012-01-18 4 views
0

SOLR (see here)을위한 많은 독립적 인 파이썬 바인딩이있다. 자이 썬에서 사용할 수있는 모듈 (C 모듈과 달리 순수 Python으로 구현 된 모듈)과 어느 것이 좋습니다.SOLR을위한 자이 썬 바인딩

도 참조 Solr: best documented, easy to use, stable Python APIs

+0

Jython에서 Solr Java 클래스를 사용할 수 없습니까? – mzjn

+0

물론, 저는 Python으로 프로그래밍하는 것을 선호합니다. Tomcat이 이미 mod_python과 반대로 존재하기 때문에 Tomcat에서 실행하기를 원합니다. 그렇지 않으면 Java에서 할 수 있습니다. – user323094

답변

3

내가 파이썬 (CPython과)에서 SOLR를 사용하고 스칼라에서 (JVM) (매우 유용한 응답 지금까지를하지 않았다). 두 경우 모두 동일한 API, 즉 HTTP 클라이언트를 사용합니다. 즉, http://www.example.com:8080/solr/datacore/select?q=DocID과 같은 URL : * & fl = DocID, 설명자

URL은 컴포지션을 통해 구성됩니다. 쿼리의 경우 필드 이름을 키로 포함하는 dict가 있으며 값으로 일치합니다. 예를 들어 위의 쿼리는 { "DocID": "*"}와 같습니다. 이 사전은 각 키 사이에 AND로 결합됩니다. 사실, 값은 각각의 방법은 자기를 반환 곳 간단한 객체와 수행하여 가입 얻을 정도

{"DocType": ["Book","Paper",Letter"], "Length": ["[0 TO 200000]"]} 

같은 더 복잡한 쿼리가

DocType:Book OR Paper OR Letter AND Length:[0 TO 200000] 

구성과 같은 SOLR 쿼리로 전환겠습니까 목록은 예를 들면 :

,966,354 :

def onlybooks(self): 
    self.querydict["DocType"] = "Book" 
    return self 

이 다음과 같은 방법 체인에 사용됩니다

이보다 더 많은 것은 과도한 행동이며 코드를 연구하지 않고는 이해할 수없는 모호한 라이브러리에서 일어나는 일을 너무 많이 숨 깁니다. SOLR의 쿼리 언어의 모든 기능과이를 효과적으로 사용하는 방법을 이해하는 것만으로는 충분하지 않습니다. 쿼리 URL을 구성하기위한 몇 가지 도우미 메서드를 작성하는 데 약 한 페이지 만 소요되는 경우 라이브러리를 사용자와 SOLR 사이에 두지 마십시오.

그런데 라이브러리를 사용하고 기능을 수행하기 위해 SOLR 스키마가 필요하면 SOLR 스키마를 앱에 파일에 포함하지 마십시오. 앱의 서버에서 바로 가져 와서 로컬에 캐시하십시오.

+0

자세한 답변 해 주셔서 감사합니다. 어떤 언어와 바인딩과도 독립적 인 HTTP 구문을 배우는 것이 중요하다는 것을 알았습니다. 수락 된 답변을 선택하는 것과 관련하여 여러 답변을 얻을 수 있다고 생각하여 여러 관점을 고려할 수있었습니다. 그래서 나는이 특별한 대답을 지금 받아 들여야하는지, 아니면 더 많은 의견을 기다려야하는지 잘 모르겠습니다. – user323094