2010-03-15 2 views
1

은 내가 각 이름 을 원자 (이름 전체 검색 엔티티 등) 토큰 화하는 것을 선호 예를 들어, 쉼표로 구분 된 이름을 가지고 내가 색인을하고자하는 열이있는 데이터베이스,Lucene.Net 지원 문구 : 색인 생성 중 필드에서 쉼표로 분리 된 데이터를 (원자 적으로) 토큰 화하는 가장 좋은 방법은 무엇입니까?

User.FullNameList = "Helen Ready, Phil Collins, Brad Paisley" 

있습니다. 가장 좋은 방법은 무엇입니까?

  1. 토큰 화 구분 기호 을 설정하는 간단한 옵션이 누락 되었습니까?
  2. 하위 클래스로 만들거나 내 자신의 토크 나이저를 롤업하는 자체 클래스를 작성 하시겠습니까?
  3. 다른 건 없나요? ;)

또는 Lucene.net은 구문을 지원하지 않습니까?

아니면이 사용 사례를 자동으로 처리하는 것이 현명합니까?

저는이 일을해야 할 첫 번째 사람이 아니라고 확신합니다. 인터넷 검색으로 눈에 띄는 솔루션이 생성되지 않았습니다.

는 *** 편집 :

헬렌 준비

필 콜린스

브래드 페이즐리

하지 이러한 개별 : 내 예제를 사용하여, 나는 하나의 필드에서 이러한 이름 문구를 저장할 단어 :

헬렌

준비

콜린스

브래드

페이즐리

+0

안녕 피트 -이 솔루션으로 어디서 났습니까? –

답변

1

편집 :

  1. 당신이 한 : 여기 잘하면 더 관련 답변입니다, 당신의 설명을 읽으면서 구분 문자를 수정하는 옵션을 놓치지 마라. .
  2. 자신의 토크 나이저를 굴려야합니다. 서브 클래스 CharTokenizer을 제안합니다. 스펙에 따라 isTokenChar()를 정의해야합니다. 즉, 쉼표 이외의 것은 토큰 char입니다.
+0

Yuval, 하나의 필드에서 6 개의 개별 단어가 아닌 3 개의 전체 이름을 색인화하려고합니다. 위의 질문과 예를 명확히했습니다. –

+0

피트, 내 대답의 새 버전을 참조하십시오. –

0

당신은 자신을 쉼표로 문자열을 분할하고, 할 수 있습니다 - 키워드 분석기를 사용하여 각각의 이름이 (비는-토큰 화)

  • 지수
  • 또는 인덱스 표준 분석기를 사용하여 각각의 이름을, 그리고 따옴표 안에 당신의 수색을 감싸십시오."Ready Phil"이 문서와 일치하지 않도록 각 이름 사이에 모호한 용어를 색인해야합니다.