0

Let's say I have a string containing words. Some of these words may be compound words.

I also have a MySQL database which contains a table which contains a column called words. This column may contain words that appear in my string, including compound words.

I would like to be able to find out which rows to retrieve from the database, when I only have the string. Splitting it on space characters is not an option, because this will make it impossible to detect if any compound words from the database appear in the string.

Any suggestions as to how to solve this issue?

4

2 に答える 2

0

入力文字列とDBレコードの関連性について言及していると思います。これは、Lucene/SOLR のようなソリューションにより適しています。

とはいえ、FULLTEXT インデックスと検索を使用すると、いくらかのマイレージが得られる可能性があります。

http://dev.mysql.com/doc/refman/5.5/en/fulltext-natural-language.html

于 2013-05-19T16:48:57.470 に答える
0

これは、次のアプローチで行うことができます。文字列にセパレータとしてスペースがあり、カンマが含まれていないと仮定しましょう。

select *
from words w
where find_in_set(w.word, replace(<your string>, ' ', ',')) > 0;

文字列の区切り文字がもう少し複雑な場合 - 句読点があるとしregexpますfind_in_set

select *
from words w
where concat(',', <your string>, ',') REGEXP concat('[ ,.!?]', w.word, '[ ,.!?]')
于 2013-05-19T17:16:50.860 に答える