2011-01-16 11 views
0

私はテーブル内の単語のリストを持っています。私はすべてのレコードを検索したいと思います。本と本、ペンとペン、つまり、「s」で終わるすべての単語を意味します。クエリには 's'のない単語と 's'の単語が表示されます。 ないクエリ"SELECT * FROM words WHERE word LIKE '%s'" スキーマ定義は、sqlクエリ前の検索語への相対検索

言葉= <word, part_of_speech>

私はどのように私はこれを行うことができます「単語」 に検索する必要がありますか?結果は可能性があり 、

book 
books 
pen 
pens 

その何かのように、「言葉」としてcolumに値があると「言葉」+「s」の両方の行を示しなどの別の値がある場合には「単語'と' word '+' s 'のようになります。 私はsqliteを使用しています。

+0

これは、これがどのDBMSであるかを示すのに役立ちますか? – RichardTheKiwi

+1

'factory'と' factories'; '男 'と'男性 ' – SLaks

+1

魚 - >魚、マウス - >マウス。あなたは複数へのこの移行を考慮していますか?あなたの質問が何であるかは分かりませんが、あるテーブルに単語のリストがあり、最初のテーブルのリストを単数形と複数形の両方で使用すると、別のテーブルを検索するために使いたいということですか?検索対象のテーブルでは、マッチは「単語全体」のみである必要がありますか? – RichardTheKiwi

答えて

1
SELECT word FROM words WHERE word LIKE 'book%' 

'ブック'、 'ブック'、 'しおり'、あなたが唯一の特定のsufixを検索したい場合など

+0

は、本だけでなく、他の単語や特定の接尾辞も付いています。 – karim

+0

CREATE TABLEスクリプトを投稿できますか? – James

+0

CREATE TABLE "no_en"( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL、 "NO" VARCHAR NOT NULL COLLATE NOCASE、 "EN" VARCHAR NOT NULL COLLATE NOCASE、 "part_of_speech" VARCHAR、カテゴリINTEGER、FOREIGN KEY(カテゴリ)REFERENCESカテゴリ(id)) – karim

0

その後、

SELECT 
    * 
FROM 
    words 
WHERE 
    word = '%s' 
    or word = '%s' || 's' #change 's' to any addition you want to try 
0

Googleのステミング」ポーターを試すにマッチします「アルゴリズム」を選択し、データに適用してからをロードしてください。このアルゴリズムは、複数形だけでなく、他の多くの形の単語を1つの単語に変換するのと同じくらい近いです。例えば、「学者」は「学者」になり、そのようなものになる。

これが品質基準を満たしていない場合、「マウス」や他の回答の例がトラップされないため、「ステミングファイル」を見つける必要があります。私は自由なものがないことを知っています(それは誰もいないという意味ではありませんが)私が私の店で使っているものは商用パッケージの一部なので、無料のものを見つける必要はありませんでした。

いずれにしても、途中で言葉に語幹を適用すると、複数の語を検索する必要がなくなり、語幹を検索するだけです。