를 검색하는 사용자가 나는 현재 만들 루씬 3.5 여러 필드를 검색하고 DisjunctionMaxQuery에 검색 할 각 필드에 대한 QueryParser를 추가 할 수 있도록합니다. 기본 연산자로 또는를 사용하지만, 지금보다 정확한 (적은) 결과를 얻을 수 및에 기본 연산자를 변경하고자 할 때 잘 작동합니다.루씬 : 여러 개의 기본 연산자 필드 = AND
문제는 모든 용어가이어야 한 필드에 있어야하기 때문에 queryParser.setDefaultOperator(QueryParser.AND_OPERATOR)
미스 많은 문서입니다.
는 예를 들어, 문서에 대한 다음과 같은 데이터를 고려해 제목 필드 = 몸 필드 = "자바, C++, PHP", "프로그래밍 언어". 사용자가 Java 프로그래밍을 검색하는 경우 제목과 본문 필드가 결합되어 있지만 검색어의 모든 용어가 포함되어 있기 때문에이 특정 문서는 결과에 포함되지 않습니다. 이 문서는 위의 쿼리에 대해 반환되지만 쿼리에 대해서는 반환하지 말아야합니다. HTML 프로그래밍.
캐럴 필드를 고려했지만 몇 가지 문제가 있습니다. 첫째, 사용자는 catchall 필드로는 불가능한 쿼리 (작성자 : 계산서)에 필드 당 용어를 자주 포함시킵니다. 또한 FastVectorHighlighter를 사용하여 특정 필드를 강조 표시하고 인덱싱하고 저장해야합니다. 그래서 catchall 필드를 추가함으로써 시간과 공간을 낭비하는 동일한 데이터를 두 번 색인화해야했습니다.
아이디어가 있으십니까?
catchall 필드의 색인 생성과 관련하여 우려할만한 시간/공간 히트를 관찰 했습니까? 내 경험에 의하면 특정 저장된 필드에서 동일한 데이터를 인덱싱 한 다음 일반화 된 인덱스 전용 필드에 추가하면 성능이나 인덱스 크기에 거의 영향을 미치지 않습니다. – femtoRgon
또한 최종 쿼리 구조가 어떻게 생겼는지 궁금합니다. 특히 dis-max 쿼리가 설정되는 방법. 의미있는 점수를 얻기가 쉽습니다. – femtoRgon
@femtoRgon disjunctionMaxQuery 구조체는 다음과 같습니다. '((title : java title : programming) | (body : java body : programming)) ~ 0.2'catchall 필드를 추가하면 먼 시간만큼 영향을 미칠 수 있다는 좋은 지적이 있습니다/space가 관련되어있다. 나는 확실히 그것을 고려했지만 필자와 같은 분야별로 검색 할 수있는 능력을 유지하기를 원한다. 사용자는이 기능을 사용할뿐만 아니라 뒤에서 사용합니다. 고마워. –