Lucene.net을 사용하고 있지만 .NET과 Java 버전 모두에 대해이 질문에 태그를 지정하고 있습니다. API가 동일하고 두 플랫폼 모두에 솔루션이 있기를 기대하기 때문입니다.Lucene QueryParser를 더 관대하게 만드는 방법은 무엇입니까?
다른 사람들도이 문제를 해결했지만 필자는 훌륭한 토론이나 예제를 찾을 수 없었습니다.
기본적으로 Lucene은 쿼리 구문에 대해 매우 까다 롭습니다.
[ParseException: Cannot parse 'hi there!': Encountered "<EOF>" at line 1, column 9.
Was expecting one of:
"(" ...
"*" ...
<QUOTED> ...
<TERM> ...
<PREFIXTERM> ...
<WILDTERM> ...
"[" ...
"{" ...
<NUMBER> ...
]
Lucene.Net.QueryParsers.QueryParser.Parse(String query) +239
사용자의 쿼리를 처리 할 때 ParseExceptions을 방지하는 가장 좋은 방법은 무엇입니까 : 예를 들어, 난 그냥 다음과 같은 오류가있어? 그것은 내게 가장 사용할 수있는 검색 인터페이스는 잘못된 쿼리 일지라도 항상 쿼리를 실행하는 것으로 보입니다. 정상적으로
- 는 지능형보기
- "청소"쿼리 전에 QueryProcessor
- 핸들 예외로 보내기에 :
몇 가능, 보완 전략이 있다는 것을 보인다 사용자에게 오류 메시지가 표시됩니다.
- 잘못된 비트를 남기고 더 간단한 쿼리를 실행하는 것일 수 있습니다.
이러한 전략을 수행하는 방법에 대한 훌륭한 아이디어가 없습니다. 다른 사람이이 문제를 해결 했습니까? 내가 알지 못하는 "단순"또는 "우아한"파서가 있습니까?
을 위해 사용하고있는 코드입니다 내 사용자가 고급 구문을 사용하지 않기 때문에 나는이 솔루션을 사용했다. 감사 ! – Costo