1

次のSpring Beanを生成したrooを使用して

<bean class="org.apache.solr.client.solrj.impl.CommonsHttpSolrServer" id="solrServer">
    <constructor-arg value="${solr.serverUrl}"/>
</bean>

構成ファイルには

solr.serverUrl=http\://localhost\:8983/solr

これは次のように使用されます。

@Autowired
transient SolrServer Address.solrServer;

@Async
public static void Address.indexAddresses(Collection<Address> addresses) {
    List<SolrInputDocument> documents = new ArrayList<SolrInputDocument>();
    for (Address address : addresses) {
        SolrInputDocument sid = new SolrInputDocument();
        sid.addField("id", "address_" + address.getId());
        sid.addField("address.id_i", address.getId());
        // Add summary field to allow searching documents for objects of this type
        sid.addField("address_solrsummary_t", new StringBuilder().append(address.getId()));
        documents.add(sid);
    }
    try {
        SolrServer solrServer = solrServer();
        solrServer.add(documents);
        solrServer.commit();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

私の質問は:

solr でインデックスを作成するには、solr でスキーマを作成する必要がありますか?それとも、このコードで十分ですか?

これとは別に、私のアプリケーションは多層アーキテクチャであり、Web サイトはその一部です。では、WindowsアプリケーションやAndroidアプリケーションなどによって削除されたデータを削除するにはどうすればよいですか。

1つの解決策はインデックスを再作成することですが、検索結果をより効果的にするために使用されるsolrの統計が失われることはありませんか?

どうすればsolrに類義語検索を追加でき、スペルミスアドオンを初期化できますか(単語は基本的に辞書からではなく、人名または場所の名前である可能性があります)?

複数の質問をまとめてすみません。よろしくお願いします。

4

1 に答える 1

2

solr でインデックスを作成するには、solr でスキーマを作成する必要がありますか?それとも、このコードで十分ですか?

はい、schema.xml ファイルが必要であり、そこにフィールドを定義してインデックスを作成する必要があります。

これとは別に、私のアプリケーションは多層アーキテクチャであり、Web サイトはその一部です。では、WindowsアプリケーションやAndroidアプリケーションなどによって削除されたデータを削除するにはどうすればよいですか。

次のコード スニペットを使用してドキュメントを削除できます。値が 12345 のフィールド ID があると仮定し<query>ます。タグの間にクエリを記述できます。

http://localhost:8983/solr/update?stream.body=<delete><query>id:12345</query></delete>&commit=true

1つの解決策はインデックスを再作成することですが、検索結果をより効果的にするために使用されるsolrの統計が失われることはありませんか?

私の知る限り、検索統計はデフォルトでは保存されないため、インデックスを再作成することが解決策になる可能性があります。

どうすればsolrに類義語検索を追加でき、スペルミスアドオンを初期化できますか(単語は基本的に辞書からではなく、人名または場所の名前である可能性があります)?

SynonymFilterFactory を schema.xml ファイルのフィールド定義に追加できます。

于 2012-12-11T20:15:55.287 に答える