ウィキペディア・デモを使用した語句の検索

ウィキペディアのデモ、キースペース、テーブル、およびデータを設定し、記事のタイトルや本文内の単語に対してクエリーを実行します。

ウィキペディア・デモ・スクリプトは、3,000件以上のウィキペディアの記事を自動的にダウンロードし、CQLキースペースおよびテーブルを作成し、記事を挿入して、タイトルと本文のカラムの両方の検索インデックスを作成します。

始める前に

デモ・スクリプトはSolrポート上のlocalhostに接続します。Solrインターフェイスとポート127.0.0.1:8983にアクセスできることを確認してください。

手順

  1. DataStax EnterpriseをSearchノードとして起動します。
  2. installation_directory/demos/wikipediaに移動します。
  3. ウィキペディアのスキーマを追加するスクリプトを実行します。
    ./1-add-schema.sh
    このスクリプトによって、単一のテーブルsolrを含むwikiキースペースが作成されます。
  4. 複数のノードがあるクラスターでデモを使用するには、各データ・センターでキースペースのレプリケーションをSimpleStrategyからNetworkTopologyStrategyに変更し、係数を1に設定します。
    cqlsh -e 'ALTER KEYSPACE wiki WITH replication = {'class': 'NetworkTopologyStrategy', 'Cassandra' : 1, 'Solr' : 1};

    この例では、クラスターにはCassandraSolrの2つのデータ・センターがあります。データ・センター名は大文字と小文字が区別されます。

  5. 2番目のスクリプト(2-index.sh)を使用してデータを読み込み、テーブルのインデックスを作成します。
    ./2-index.sh --wikifile wikipedia-sample.bz2
    3,000件の記事がsolrテーブルに読み込まれ、インデックスが作成されます。
    Start indexing wikipedia...
    ------------> config properties:
    docs.file = wikipedia-sample.bz2
    keep.image.only.docs = false
    -------------------------------
    Indexed 1000
    Indexed 2000
    Indexed 3000
    Finished
    Visit http://localhost:8983/demos/wikipedia/ to see data
  6. オプション: データがキースペース/テーブルに正常に読み込まれたことを確認します。
    cqlsh -e 'DESC KEYSPACE wiki; SELECT count(*) FROM wiki.solr;'
    結果には、キースペース、テーブル・スキーマ、インデックス設定、および記事の件数の詳細が示されます。
    CREATE KEYSPACE wiki WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}  AND durable_writes = true;
    
    CREATE TABLE wiki.solr (
        id text PRIMARY KEY,
        body text,
        date text,
        solr_query text,
        title text
    ) WITH bloom_filter_fp_chance = 0.01
        AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
        AND comment = ''
        AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
        AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
        AND crc_check_chance = 1.0
        AND dclocal_read_repair_chance = 0.1
        AND default_time_to_live = 0
        AND gc_grace_seconds = 864000
        AND max_index_interval = 2048
        AND memtable_flush_period_in_ms = 0
        AND min_index_interval = 128
        AND read_repair_chance = 0.0
        AND speculative_retry = '99PERCENTILE';
    CREATE CUSTOM INDEX wiki_solr_solr_query_index ON wiki.solr (solr_query) USING 'com.datastax.bdp.search.solr.Cql3SolrSecondaryIndex';
    
     count
    -------
      3579
    
    (1 rows)
    
    Warnings :
    Aggregation query used without partition key
    
  7. wikiキースペースを使用してcqlshを起動します。
    cqlsh -k wiki
    CQLシェル・セッションがwikiキースペースのlocalhostで起動します。
    Connected to pw-search at 127.0.0.1:9042.
    [cqlsh 5.0.1 | Cassandra 3.11.0.1805 | DSE 5.1.3 | CQL spec 3.4.4 | Native protocol v4]
    Use HELP for help.
    cqlsh:wiki>
  8. 小さいデータ・セットに対するクエリー結果を迅速に取得するには、ページングを無効にします。
    PAGING off
    注: ページングはこのセッションに対してのみオフになります。ページングは再起動後に有効になります。cqlshのデフォルトの起動パラメーターを変更するには、cqlshrcファイルを使用します。
    Disabled Query paging.
  9. solrテーブルの検索インデックス・スキーマを表示します。
    DESCRIBE ACTIVE SEARCH INDEX SCHEMA ON solr;
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <schema name="autoSolrSchema" version="1.5">
      <types>
        <fieldType class="org.apache.solr.schema.TextField" name="TextField">
          <analyzer>
            <tokenizer class="solr.WikipediaTokenizerFactory"/>
          </analyzer>
        </fieldType>
        <fieldType class="org.apache.solr.schema.StrField" name="StrField"/>
      </types>
      <fields>
        <field indexed="true" multiValued="false" name="body" stored="true" type="TextField"/>
        <field indexed="true" multiValued="false" name="title" stored="true" type="TextField"/>
        <field docValues="true" indexed="true" multiValued="false" name="id" stored="true" type="StrField"/>
        <field docValues="true" indexed="true" multiValued="false" name="date" stored="true" type="StrField"/>
      </fields>
      <uniqueKey>id</uniqueKey>
    </schema>
  10. インデックスを使用してテーブルに対するクエリーを実行します。
    • nationalという単語を含む記事のタイトルを返します。
      SELECT title FROM solr WHERE solr_query='title:national';
      7つのレコードが返されています。
       title
      --------------------------------------------------------------------------
                                            Bolivia national football team 1999
                                            Bolivia national football team 2000
                                          Kenya national under-20 football team
                                            Bolivia national football team 2001
                                            Bolivia national football team 2002
                                       Israel men's national inline hockey team
       List of French born footballers who have played for other national teams
      
      (7 rows)