Redsはnode.jsの軽量Redis検索です。
PyredsはPython Port of Redsです。
Pyredsには、実行中のRedisサーバーが必要です。インストール手順については、RedisのQuickStartを参照してください。
pyredsをインストールするには、単純に:
$ pip install pyredsNLTKデータをインストールする必要がある場合があります。
>>> import nltk
>>> nltk.download( ' stopwords ' )最初にやりたいことは、検索インスタンスを作成することです。これにより、キーを渡すことができます。これは、同じDBで複数の検索を行うことができるように、Redis内の名前のペーシングに使用されるキーを渡すことができます。
>>> import pyreds
>>> search = pyreds.create_search( ' pets ' )Pyredsは、任意の数値または文字列ベースのIDに対して機能するため、データストアを組み合わせることさえ、本質的に何でもこのライブラリを利用できます。次の例では、「データベース」のリストを使用して、いくつかの文字列が含まれています。これは、検索#インデックス()を呼び出して、テキストの本文とある種のID、この場合はインデックスをパディングすることでPyredsに追加します。
>>> strs = []
>>> strs.append( ' Tobi wants four dollars ' )
>>> strs.append( ' Tobi only wants $4 ' )
>>> strs.append( ' Loki is really fat ' )
>>> strs.append( ' Loki, Jane, and Tobi are ferrets ' )
>>> strs.append( ' Manny is a cat ' )
>>> strs.append( ' Luna is a cat ' )
>>> strs.append( ' Mustachio is a cat ' )
>>> for i, v in enumerate (strs):
... search.index(v, i)Pyredsに対してクエリを実行するには、Queryインスタンスを返す文字列で検索#query()を呼び出します。次に、Query#End()を呼び出します。これは、存在するときにIDのリストを返し、または空のリストを返します。
>>> ids = search.query( ' Tobi dollars ' ).end()
>>> print ( ' Search results for "Tobi dollars" ' ))
>>> for id in ids:
... print ( ' - {} ' .format(strs[ id ]))デフォルトでは、Pyredsは検索語の交差点を実行します。前の例では、「トビ」と「ドル」の両方が含まれる文字列のみが1つの文字列のみが生成されるため、次の出力が得られます。
Search results for "Tobi dollars":
- Tobi wants four dollarsPyredsを微調整して、「組織」または「または「検索#query()とquery#end()の間で#type()を検索することにより、組合を実行できます。
>>> ids = search.query( ' tobi dollars ' ).type( ' or ' ).end()
>>> print ( ' Search results for "Tobi dollars" ' ))
>>> for id in ids:
... print ( ' - {} ' .format(strs[ id ]))3つの文字列には「トビ」または「ドル」が含まれているため、組合の検索には次のようになります。
Search results for "tobi dollars":
- Tobi wants four dollars
- Tobi only wants $4
- Loki, Jane, and Tobi are ferrets>>> search = pyreds.create_search(key)
>>> search.index(text, id )
>>> search.remove( id )
>>> query = search.query(text[, type ]) # will return a `Query` instance
>>>
>>> query.between(start, stop)
>>> query.type( type )
>>> query.end()MITライセンス