Lucene java QueryParser
을 KeywordAnalyzer
과 함께 사용합니다. topic:(hello world)
과 같은 검색어는 KeywordTokenizer
에 의해 여러 부분으로 나뉘어져 결과 검색어 개체는 topic:(hello) topic:(world)
과 같이 표시됩니다. 즉 하나 대신 두 개의 키 - 값 쌍이 있습니다. QueryParser
은 큰 따옴표를 사용하지 않고 hello world
을 하나의 값으로 해석하겠습니다. 그렇게하는 가장 좋은 방법은 무엇입니까?KeywordTokenizer가 여러 키 - 값 쌍을 생성하지 못하도록
구문 분석 topic:("hello world")
은 단일 키 값 조합으로 나타나지만 큰 따옴표를 사용하면 옵션이 아닙니다.
나는 Lucene 검색 엔진을 사용하지 않습니다. 쿼리를 구문 분석하기 위해 Lucene의 QueryParser를 사용하고 있습니다. 검색을 위해서가 아닙니다. 텍스트 Hello World
은 런타임시 사용자가 변경할 수 있도록 입력됩니다. KeywordTokenizer
은 Hello World
을 두 개의 토큰으로 분할하는 대신 하나의 토큰으로 처리하는 것이 좋습니다.
검색어 구문 분석기를 호출하는 방법을 지정하는 코드 스 니펫을 추가 할 수 있습니까? 사용자 지정 쿼리 파서를 직접 작성하거나 따옴표를 전처리 단계로 추가 할 수 있다고 생각합니다. 그렇지 않다면 이유가 무엇인지 설명하십시오. –
QueryParser qp = 새 QueryParser ("알 수 없음", 새 KeywordAnalyzer()); qp.setDefaultOperator (QueryParser.AND_OPERATOR); 쿼리 쿼리 = qp.parse (aString); aString은 웹 응용 프로그램 사용자가 제공합니다. aString이 주제 인 경우 : 안녕하세요. 주제 : hello 주제 : world – RHT
내 웹 응용 프로그램 사용자는 aString을이 주제와 같은 큰 따옴표로 묶을 수 있습니다 ("hello world"). 그러면 두 개가 아닌 하나의 Term 객체를 사용할 수 있습니다. 하지만 그 용어는 완벽하지 않습니다. 자동으로 큰 따옴표와 그 결과 키를 잘라냅니다. 값은 큰 따옴표가없는 topic : hello world처럼 보입니다. Lucene이 아닌 검색 엔진이 이러한 큰 따옴표를 사용하여 정확한 구문 검색을 수행하기 때문에 Query Parser에서 사용자가 입력 한 큰 따옴표를 제거하지 않기를 바랍니다. – RHT