2011-11-21 12 views
0

URL、BODYTEXT、TITLEなどに基づいてインデックスを作成しています。私のコードは動作していますが、正確なURL一致レコードのみが表示されます。たとえば、次のように レコード1: URLます:http://example.com/example/index.php 内容:例はluceneのとBLAのBLAに良いです ホスト: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もなので、レコード1とレコード2をURLで取得する方法の部分は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

A TermQueryは完全に一致します。最も簡単な検索方法です。 PrefixQueryと呼ばれる別の種類のクエリがあり、指定した値で始まるフィールドに一致します。それはあなたが探しているものですか? URLの任意の部分を照合する場合は、URLを分割して別々のフィールドにコンポーネントのインデックスを作成するか、インデックス作成(および検索)プロセス中に効果的に行うことができるアナライザーを使用する必要があります。

関連する問題