Lucene의 표준 분석기 사용. 문제의 제목 입력란은 저장되지 않고 분석됩니다.Lucene.net GetFieldQuery 대 TermQuery
title:"some url friendly title" (- replaced by whitespace, everything lowercased).
내가 이 생각 Lucene.net 버전은 다음과 같습니다 :
new TermQuery(new Term("title","Some-Url-Friendly-Title"))
누가 복음에서
title:"Some-Url-Friendly-Title"
은이 쿼리가 올바르게으로 다시 작성됩니다 다음과 같이 쿼리입니다
그러나 결과는 반환되지 않습니다.
_parser.GetFieldQuery("title","Some-Url-Friendly-Title")
을 그리고 예상대로 일 :
그럼 난 시도!
두 쿼리를 통해 수행되었다 : _searcher.Search ([쿼리 개체], [정렬 개체])
누군가가) (어떤 TermQuery와 _parser.GetFieldQuery의 차이를 확인하기 위해 올바른 방향으로 날 지점 수 아르?
그래서 TermQuery를 생성하고 searcher를 통해 실행하면 분석하지 않고 요청한 용어 값을 토큰 화합니까? 나는 searcher를 통해 실행 된 모든 쿼리가 실행되기 전에 적절히 분석된다는 인상을 받았다. 그렇지 않은가요? –
그렇지 않습니다. 일반적으로 분석기는 문서 인덱싱 (추가 또는 업데이트) 및 쿼리 구문 분석시 적용됩니다. 물론 인덱스에 도달하기 전에 쿼리에 분석기를 적용하는 일부 레이어를 추가하지 않는 한. 그러나 IndexSearcher는 필자가 알고 있듯이 (IndexWriter와 QueryParser가하는 것과는 달리) 분석기에 대해서는 아무 것도 모른다. – femtoRgon
감사합니다. 더 자세히 살펴보면 Manning 's Lucene 책의 인용문이 있습니다. "검색어 표현식의 한 단어가 검색어와 일치합니다. 표현식이 하나의 단어" "으로 구성되어있는 경우 검색어 구문어에서 TermQuery가 반환됩니다. 의미, 제 이해 거꾸로.나는 질의 객체를 생성하는 것이 질의를 생성하여 검색 자에게 보내는 명확한 방법이라고 생각했다. 현실은 정반대입니다. QueryParser에 문자열을 입력하면 검색기에서 실행되는 Query 개체가 만들어집니다. 당신의 답은 나를 올바른 길로 인도합니다. –