0

pysolr を使用して python 検索アプリを作成することに成功しました。これまで、id と title の 2 つのフィールドを使用してきました。今、2 つの異なるバージョンのタイトルをプッシュしたいと考えています。ストップワードを削除した後のオリジナルとタイトル。何か案は?次のコードが機能します。

def BuildSolrIndex(solr, trandata):
    tmp = []
    for i, dat in enumerate(trandata):
        if all(d is not None and len(d) > 0 for d in dat):
            d = {}
            d["id"] = dat[0]
            d["title"] = dat[1]
            tmp.append(d)
    solr.add(tmp)
    solr.optimize()
    return solr

しかし、これはしません:

def BuildSolrIndex(solr, trandata):
    tmp = []
    for i, dat in enumerate(trandata):
        if all(d is not None and len(d) > 0 for d in dat):
            d = {}
            d["id"] = dat[0]
            d["title_org"] = dat[1]
            d["title_new"] = CleanUpTitle(dat[1])
            tmp.append(d)
    solr.add(tmp)
    solr.optimize()
    return solr

何か案は?

編集:

以下は例外です。

Traceback (most recent call last):
    ...
    solr = BuildSolrIndex(solr, trandata)
  File "...", line 56, in BuildSolrIndex
    solr.add(tmp)
  File "build/bdist.linux-x86_64/egg/pysolr.py", line 779, in add
  File "build/bdist.linux-x86_64/egg/pysolr.py", line 387, in _update
  File "build/bdist.linux-x86_64/egg/pysolr.py", line 321, in _send_request
pysolr.SolrError: [Reason: None]
<response><lst name="responseHeader"><int name="status">400</int><int name="QTime">8</int></lst><lst name="error"><str name="msg">ERROR: [doc=...] unknown field 'title_new'</str><int name="code">400</int></lst></response>
4

1 に答える 1

1

「title_new」が有効なフィールドとして認識されないことを例外が示しているため、これは Solr schema.xml の問題のようです。この回答はあなたに役立つかもしれません: https://stackoverflow.com/a/14400137/1675729

schema.xml に「title_new」フィールドが含まれていること、および必要に応じて Solr サービスを再起動したことを確認してください。これで問題が解決しない場合は、戻ってきてください。

于 2013-12-31T09:51:58.833 に答える