2011-04-13 7 views
3

Lucene.Net으로 Proximity Search을 만들고 싶습니다. 나는 그가 그를위한 대답 인 것처럼 보이는 this question을 보았다. 그러나 어떤 코드도 suplied되지 않았다. Java 문서에서는 ~ 사이의 단어 수와 함께 ~ 문자를 사용하는 것으로되어 있지만이 문자가 코드에서 어디에 위치하는지 알지 못합니다. 누구나 Lucene.Net을 사용하여 근접 식 검색의 예를 들어 줄 수 있습니까?근접 검색 예제 Lucene.Net

편집 :

내가 지금까지 가지고 :

IndexSearcher searcher = new IndexSearcher(this.Directory, true); 

string[] fieldList = new string[] { "Name", "Description" }; 

List<BooleanClause.Occur> occurs = new List<BooleanClause.Occur>(); 
foreach (string field in fieldList) 
{ 
    occurs.Add(BooleanClause.Occur.SHOULD); 
} 


Query searchQuery = MultiFieldQueryParser.Parse(this.LuceneVersion, query, fieldList, occurs.ToArray(), this.Analyzer); 

나는 "~"는 FuzzySearch 동안 그 말을 밖으로 MultiFieldQueryParser의 그 오류에 대한 임의의 숫자로 값을 추가하려고하면 0.0에서 1.0 사이 여야합니다.하지만 근접 검색에서 3 단어의 분리 예를 원합니다. "내 검색"~ 3

+0

내가 누락 된 것이 아니라면 ~ 문자는 (사용자가 링크 된 문서에 표시된 것처럼) 쿼리의 텍스트로 직접 이동합니다. – Odrade

+0

@Odrade 질문에 대한 수정 사항을 참조하십시오. 나는 그것을 시도했지만 파서는 내가 퍼지 검색을하려고한다고 생각한다. – FelixMM

+0

죄송합니다, Lucene .NET에 대한 전문 지식이 없습니다. 나는 당신이 문서에서 명백한 것을 놓치고있을 수도 있다고 생각했다. 그래도 그런 식으로 보이지 않습니다. – Odrade

답변

8

물결표는 한 단어로 적용 할 경우 fuzzy search이거나 구에 적용하는 경우 proximity search을 의미합니다. 문구 ('용어 기간'~ 10) 대신 한 단어 (기간 ~ 10)에 적용하는 것과 같은 오류가 발생합니다.

프레이즈의 끝에 "~", 근접 검색이 물결표를 사용하는 기호를 수행합니다.

1

동일한 버전의 Lucene.NET과 고전적인 자바 lucene 사이의 유일한 차이점은 내부가 아닌 외부 - 운영 목표는 입력 (쿼리)에 매우 호환 프로젝트를 가지고 있어야한다는 것입니다 - 및 출력 (색인 파일) 측면. 그래서 그것은 자바 lucene 작동하지만 작동합니다. 그렇지 않으면 버그입니다.

+0

근접 검색을 수행하는 방법에 대한 몇 가지 코드 예가 ​​없습니까? 저는 Java Lucene이나 Lucene을 사용하지 않았습니다. 전에는 알았습니다. 사용 가능한 문서는 Lucene.Net에 대해서는별로 좋지 않습니다. – FelixMM