2013-09-23 2 views
1

Lucene.Net MoreLikeThis 쿼리를 구현하려고하는데 문서에서 흥미로운 항목을 찾을 수없는 것 같습니다.Lucene.Net MoreLikeThis는 0 개의 흥미로운 용어와 쿼리에 절이 없음을 반환합니다.

내 시나리오에서 사용자가 검색 결과 웹 페이지에서 "이와 유사하게"링크를 클릭하면 쿼리 문자열에 문서 ID가 전달됩니다. 내 Lucene.Net 코드는 다음과 같습니다 :

var similarSearch = new MoreLikeThis(reader); 
similarSearch.SetFieldNames(new[] { "Place", "Subject", "Description", "Name", "Town", "Occupation" }); 
similarSearch.MinWordLen = 3; 
similarSearch.Boost = true; 

var terms = similarSearch.RetrieveInterestingTerms(docid); 
var doc = reader[docid]; 

var searchQuery = similarSearch.Like(docid); 

실행 후; 변수라는 용어는 빈 배열이고 doc 변수는 문서를 포함하며 searchQuery에는 절이 없습니다. 쿼리를 사용하여 검색을 실행하면 문서가 반환되지 않습니다.

내 결론은 독자로부터 문서를 가져올 수 있지만 MoreLikeThis 개체는 쿼리를 작성하는 데 아무 것도 찾을 수 없습니다.

왜 그런가? - 어떤 결과가 반환되는 분석기, MinTermFreq 및/또는 I 같은 문제가 있었다 MinDocFreq

:

+0

'search \ hits = searcher.Search (searchQuery);와 같이'searchQuery'를 사용하여 검색한다고 가정합니다. [이 샘플] (http://lucene.apache.org/core/3_0_3/api/contrib-queries/org/apache/lucene/search/similar/MoreLikeThis.html)을보십시오 – rae1

+0

@ rae1n 그 다음입니다. 코드'var hits = searcher.Search (searchQuery, 15000);'줄에. 'hits.TotalHits' 실행은 0입니다. 그 이유는'searchQuery'에서 절이 부족하다는 가정하에 샘플에서 제외 시켰습니다. –

+0

알 수 있습니다. 그 경우에 기회는 그 문서와 같은 것, 최소한 절단을 만들기에 충분하지 않은 것입니다 ... – rae1

답변

3

난 당신이 하나 이상의 MoreLikeThis 개체에 다음 매개 변수를 설정해야 할 수 있습니다 생각합니다. 위의 매개 변수를 설정하고 나면 (최소값을 1로 설정해보십시오) 효과가있었습니다.

+1

Phil 감사합니다. 불행히도 그 요구 사항은 결국 없어졌습니다. 다행히도 이것은 다른 누군가를 도울 것이다. –

+0

나는 문자 그대로 이것으로 내 머리카락을 찢어 버렸다. 정말 고맙습니다! – Hazza

+0

답장을 보내 주셔서 감사합니다. 그것은 내 시간을 절약했다. – Moshii

관련 문제