2011-11-21 5 views
0

URL, BODYTEXT, TITLE 등을 기반으로 색인을 생성했습니다. URL을 기반으로 검색하고 싶지만 정확한 URL 일치 레코드 만 제공됩니다. 기록 : 1 : 예를 들어 URL : HTTP : 내용 //example.com/example/index.php 예를 루씬과 즐 즐에서 좋은 호스트 : example.com 제목 : 환영 예lucene의 URL을 기반으로 레코드를 얻는 방법

기록 2 : URL : HTTP : //example.com/ 내용 : 예는 가장 좋은 방법 호스트의 하나이며, example.com 제목 : 예에 오신 것을 환영합니다

내 URL이 http://example.com/ 때문에에만 기록 2를 줄입니다 그래서 http://example.com/http://example.com/example/index.php이이기 때문에 url로 레코드 1과 레코드 2를 얻는 방법부분은 http://example.com/입니다. 검색을위한

내 코드 - 색인

에>

    Term term = new Term("URL", siteUrl.toLowerCase()); 
     Query query1 = new TermQuery(term); 
     BooleanQuery booleanQuery.add(query1,BooleanClause.Occur.MUST); 
       TopDocs hits = is.search(booleanQuery, 50000); 

코드는

private Document createLuceneDocument(HTMLDocument htmlDocument) 
    { 
    Document document = new Document(); 
    document.add(new Field("URL", htmlDocument.getUrl().toLowerCase(), Field.Store.YES,Field.Index.ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS)); 

    return document; 

} 

답변

0

TermQuery은 정확히 일치한다. 가장 간단한 검색 방법입니다. PrefixQuery라는 다른 종류의 쿼리가 있는데,이 쿼리는 사용자가 지정한 값으로 시작하는 필드와 일치합니다. 그게 당신이 찾고있는거야? URL의 어느 부분에서나 일치 시키려면 URL을 분해하고 별도의 필드에서 구성 요소의 색인을 생성하거나 색인 생성 (및 검색) 프로세스 중에 효과적으로 수행 할 수있는 분석기를 사용해야합니다.

관련 문제