2008-09-15 4 views
1

나는 점수 대신에 Lucene.Net 색인의 주어진 필드에 의해 질의 결과를 정렬하는 방법을 발견했다. 필요한 것은 인덱싱되지만 토큰 화되지 않은 필드입니다. 그러나 내가 알아낼 수 없었던 것은 "a"와 "the"와 같은 정지 단어를 무시하면서 해당 필드를 정렬하는 방법입니다. 예를 들어 다음 책 제목은 오름차순으로 정렬됩니다.Lucene.Net 필드를 기준으로 정렬하고 'a'및 'the'와 같은 일반적인 중지 단어를 무시하는 방법?

  1. 호튼의 고양이는이

그런 일이 가능하고, 그렇다면, 어떻게 누구 경청한다?

나는 Lucene.Net 2.3.1.2를 사용하고 있습니다.

답변

1

Lucene에서 반환 한 결과를 내 자신의 사용자 지정 개체 모음으로 래핑합니다. 그런 다음 추가 정보/컨텍스트 정보를 채울 수 있으며 일치하는 내용 미리보기를 꺼내기 위해 형광펜 클래스를 사용하고 페이징을 추가 할 수 있습니다. 비슷한 경로를 사용하면 "결과"클래스/개체를 만들 수 있습니다. SortBy 속성과 같은 것을 추가하고 정렬 할 필드를 잡고, 중지 단어를 제거한 다음이 속성에 저장합니다. 이제 그 속성을 기반으로 컬렉션을 정렬하십시오. 검색하십시오

+0

그게 어떻게해야 할 것 같아, 네. 나는 Lucene 결과로 커스텀 객체의 콜렉션을 생성하므로 너무 어렵지 않아야한다. 감사. – Peaeater

0

색인을 만들 때 정렬하려는 단어 만 포함하는 필드를 만든 다음 검색 할 때 해당 필드를 정렬하고 전체 제목을 표시하십시오.

+0

음을 해결하기 위해 흥미로운 search lucene .net index with sort option 링크를 발견, 그 그것은, 트릭, 안 그래? 토큰 화 된 필드와 그 필드를 분석하여 토큰 화 된 단어와 구두점을 분류 할 수는 없습니다. 이해합니다. 그런 정지 단어를 없애고 필드를 토큰 화되지 않은 상태로 유지하는 방법은 무엇입니까? – Peaeater

+0

코드에서 정지 단어를 제거하십시오. 당신은 자신의 목록을 유지해야합니다. –

0

Lucene을 사용한 이후로 꽤 오랜 시간이 걸렸지 만, 내 생각에 스톱 워드가 이미 제거 된 상태에서 값을 정렬하고 저장하기위한 추가 필드를 추가하는 것이 좋습니다. 같은 분석기를 사용하여이 값을 생성 할 수 있습니다.

0

구두점을 제거하고 단어를 멈추기 위해 분석기로 필드를 토큰 화해야한다는 점에서 catch-22가있는 것처럼 보이지만 토큰 화 된 필드는 정렬 할 수 없습니다. 토큰 화하지 않고 정지 단어를 제거하는 방법은 무엇입니까?

+1

Lucene을 사용하여 제거하지 마십시오. 직접하십시오. –

0

, 나는 UR 문제