1


0

SOLRで「で始まる」検索を実装する方法

私はクラシファイドのウェブサイトを所有しており、ユーザーはたとえば車を検索できます。

車を検索するとき、おそらく皆さんがご存知のように、名前に多くの語尾があります。 たとえば、Bmw 330ci(「ci」で終わる)と言うことができますが、Bmw 330i、またはBmw 330diなどもあります。

SOLRにこれを「理解」させるには、330 SOLRを検索すると、330ci / 330i / 330diなどを含む結果が返されます。

また、ユーザーが具体的にBmw 330ciを入力した場合は結果を返さず、Bmw 330ciおよびNOT Bmw 330i / diなどのみを返すべきです。

SOLRは初めてですが、動作させる方法を理解し始めています。 ただし、これに関する少しのガイダンスが必要です!

どうしましたか?

ありがとう

4 Answer


1


まあ、それはいくつかの要因に依存しますが、一般的なルールとして、最初のケースではワイルドカードを使用できます、例えば:+ q = 330 *

2番目の場合、フィールドを直接ポイントして正確な検索を実行できます::330ci


1


おそらく、WordDelimiterFilterFactoryを使用してフィールドを分析し、数値遷移で分割するように設定する必要があります。 これにより、330のクエリが330anythingに一致します。

デフォルトでは、クエリ時にこれを行うと、330di→ "330 di"からフレーズクエリが作成され、両方の部分がインデックスに存在する場合にのみ一致するはずです。 詳細については、http://wiki.apache.org/solr/AnalyzersTokenizersTokenFiltersを参照してください。


0


SOLRはわかりませんが、全文検索用のようです。

ただし、モデルは事前にわかっているため、通常のSQLを使用してこれを行うことができます。

'' '' '

名前のデータベースフィールドでは、ベース名と末尾を混在させる代わりに、「rootName」や「suffixName」のように2つの列を2列に分割できます。

その後、SQLは非常に自然に、非常に効率的に(全文検索と比較して)、必要なものを見つけることができます。「rootName」を検索し、「suffixName」を選択します(ただし、指定した場合のみ)。