문제

Lucene을 사용하여 "책 검색"API를 구축하고 있습니다. Lucene Index에서 책 이름, 저자 및 서적 범주 필드를 색인해야합니다.

단일 책은 여러 개의 고유 한 책 범주에 속할 수 있습니다 ... 예 : :

BookName1- 소설, 유머, 철학. BookName1- 소설, 과학. BookName1- 인간, 비즈니스. BookName4-Humour 등 .....

사용자는 특정 카테고리에서 "homour"라는 모든 책을 검색 할 수 있어야합니다.

이러한 상황이 주어지면 어떻게 필드 위에 색인하고 루센에서 쿼리를 구축합니까?

도움이 되었습니까?

해결책

Lucene 문서의 필드가 여러 번 발생할 수 있습니다. 문서를 작성하고 이름과 저자의 값을 추가 한 다음 각 범주에 대해 동일하게 수행하십시오.

  • 새로운 루센 문서를 만듭니다
  • 이름 필드와 가치를 추가하십시오
  • 저자 필드와 가치를 추가하십시오
  • 각 범주에 대해 :
    • 카테고리 필드와 값을 추가하십시오
  • 인덱스에 문서를 추가하십시오

카테고리에 대한 색인을 검색하면 이후에 값을 가진 카테고리 필드가있는 모든 문서를 리턴합니다. 카테고리는 '키워드'필드 여야합니다.

특정 코드는 루센 버전마다 약간 다르기 때문에 영어로 작성했습니다.

다른 팁

간단한 "카테고리"필드를 만들 수 있습니다. 여기서 공간에 의해 분리 된 책의 모든 categrories를 나열 할 수 있습니다.

그런 다음 다음과 같은 것을 검색 할 수 있습니다.

stock market AND category:(+"business")

또는 둘 이상의 카테고리에서 검색하려면

stock market AND category:(+"business" +"philosophy")

나는 사용할 것이다 솔러 대신 - 그것은 루센을 기반으로하고 ASF가 관리하지만, 특히 새로운 이민자들에게는 루센보다 훨씬 쉽게 사용하기 쉽습니다.

Lucene의 거의 모든 메인 라인 기능 (확실히 설명하는 프로젝트에 필요한 모든 것)과 스냅 샷, 복제, 스키마 등과 같은 추가 사항을 제공한다면 ...

Solr에서는 단순히 이와 같은 정보를 인덱싱하려는 필드를 정의합니다. schema.xml:

<field name="book_id" type="string" indexed="true" stored="true" required="true" multiValued='false'/>
<field name="book_name" type="text" indexed="true" stored="true" required="true" multiValued='false' />
<field name="book_authors" type="text" indexed="true" stored="true" required="true" multiValued='true' />
<field name="book_categories" type="textTight" indexed="true" stored="true" required="true" multiValued='true' />

주목하십시오 multiValued='true' 속성을 사용하면이 필드로 배열이나 목록을 효과적으로 전달할 수 있으며 Solr에 의해 잘 나오고 색인됩니다.

일단이 점이 있으면 Solr을 시작하면 "다음과 같은 질문을 할 수 있습니다.book_authors:Hemingway" 또는 "book_categories:Romance book_categories:Mills".

구문 분석 복합 쿼리 (퍼지 매치, 부울 운영, 점수 부스트, ...)와 같은 일을 할 수 있도록 사전 작성 및 구성된 몇 가지 쿼리 처리기가 있습니다. Solr의 API가 HTTP를 통해 노출되면이 모든 것은 숫자로 랩핑됩니다. 클라이언트 라이브러리의 경우 제작 쿼리의 저수준 세부 사항을 직접 처리 할 필요가 없습니다.

많은 것이 있습니다 엄청난 선적 서류 비치 당신을 시작하기 위해 그들의 웹 사이트에서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top