рдкрд╛рдпрдерди рдореЗрдВ Xapian рдкреВрд░реНрдг-рдкрд╛рда рдЦреЛрдЬ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдЖрдЬ, рд╡реЗрдм 2.0 рдХреЗ рдпреБрдЧ рдореЗрдВ, рдЬрдм рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рдордЧреНрд░реА рд╣реЛрддреА рд╣реИ, рддреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкреВрд░реНрдг-рдкрд╛рда рдЦреЛрдЬ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред



рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:



рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдиреНрдп рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдлрд╛рдпрджреЗ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╕рдЪреНрдЪрд╛рдИ рдЦрд╛рдорд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдереА - рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХрднреА-рдХрднреА рдПрдХ рдбреЗрдорди рд▓реЙрдиреНрдЪ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдлрд┐рдВрдХреНрд╕ ), рдЬреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред



рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдЕрдкрдиреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рд╣реИрдВред рдореИрдВ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЕрд▓реНрдк-рдЬреНрдЮрд╛рдд рдЬрд╝рд╛рдкрд┐рдпрди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред



рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди



рдпрд╣ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд (GPL) рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА C ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд╛рдпрдерди, PHP, рд░реВрдмреА, рдкрд░реНрд▓, рдЬрд╛рд╡рд╛, Tcl рдФрд░ C # рд╢рд╛рдорд┐рд▓ рд╣реИрдВред



рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ:



рдПрдХ рдорд╛рдпрдиреЗ рдореЗрдВ, Xapian рдХрд╛ рдореБрдЦреНрдп рджреЛрд╖ C ++ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реИред SWIG рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдореМрдЬреВрдж API C ++ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ ред



рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рдкреНрд░рднрд╛рд╡реА Xappy рд░реИрдкрд░ рд╣реИ рдЬреЛ рд╕рднреА рдЧрдВрджреЗ рдХрд╛рдо рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИред



рд╕реНрдерд╛рдкрдирд╛



рдкрд╣рд▓рд╛ рдХрджрдо рдЦреБрдж рдЬрд╝реЗрдкрд┐рдпрди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЕрдЬрдЧрд░ рдФрд░ Xappy рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реАред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдХреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдмрдВрдЯреВ 10.10 рдореЗрдВ, рдЖрдкрдХреЛ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

sudo apt-get install libxapian15 python-xapian python-xappy
      
      





Xappy easy_install рдпрд╛ рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ:

 sudo pip install xappy
      
      





рдЕрдиреБрдХреНрд░рдордг



рдЖрдЗрдП рдХреБрдЫ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

 import xappy #         #        connection = xappy.IndexerConnection('/path/to/base') #    connection.add_field_action( 'title', xappy.FieldActions.INDEX_FREETEXT, weight=5, language='ru') connection.add_field_action( 'description', xappy.FieldActions.INDEX_FREETEXT, language='ru')
      
      





рдЬрдм рдЖрдк рдЕрдиреБрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдирдпрд╛ (рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж) рдЦреЛрдЬ рд╕реВрдЪрдХрд╛рдВрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдЬрд┐рд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╛рд░реВрдк рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред



рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╕реВрдЪрдХрд╛рдВрдХ рдлрд╝реАрд▓реНрдб рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдирд╛рдо, рдкреНрд░рдХрд╛рд░ рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред



рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:



рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЙрдкрдпреБрдХреНрдд рд╣реИ:

 #    doc = xappy.UnprocessedDocument() #   doc.fields.append(xappy.Field('title', '  ')) doc.fields.append(xappy.Field('description', '  ')) #    connection.add(doc)
      
      





рдкреНрд░рддреНрдпреЗрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 #      for posts_item in posts: doc = xappy.UnprocessedDocument() #       #    ! doc.id = posts_item.id doc.fields.append(xappy.Field('title', posts_item.title)) doc.fields.append(xappy.Field('description', posts_item.description) connection.add(doc)
      
      





рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдбрд┐рд╕реНрдХ рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

 connection.flush() connection.close()
      
      





рдпрд╣реА рд╣реИ, рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ!



рдЦреЛрдЬ



рдореМрдЬреВрджрд╛ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЦреЛрдЬ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 import xappy #         #        connection = xappy.SearchConnection('/path/to/base')
      
      





рдПрдХ рд╕реНрдерд┐рддрд┐ рд╕рдВрднрд╡ рд╣реИ рдЬрдм рдЦреЛрдЬ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдирдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рд╡рд░реНрддрдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рд╣реЛрдЧрд╛:

 connection.reopen()
      
      





рдЦреЛрдЬ рдХреНрд╡реЗрд░реА ( SearchConnection рд╡рд░реНрдЧ) рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣реИ query_parse:

 #    query = connection.query_parse('') #    10  #      10, 20  .. results = connection.search(query, 0, 10) # -  if results.matches_estimated > 0: for results_item in results: print(results_item.rank, results_item.id) else: print('  ')
      
      





STORE_CONTENT рдпрд╛ INDEX_EXACT рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ ID рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдЦреЛрдЬ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

 for results_item in results: print(results_item.data['title'])
      
      







рд╕рдВрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХ



рдмреЗрд╢рдХ, рдпрд╣ рдЙрди рд╕рднреА рд╕реЗ рджреВрд░ рд╣реИ рдЬреЛ рдЬрд╝рд╛рдкрд┐рдпрди рд╕рдХреНрд╖рдо рд╣реИред Xappy 0.5 рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЗрди рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ, рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЬрд╝рд╛рдкрд┐рдпрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╕рд╛рдордЧреНрд░реА рдЕрдВрдЧреНрд░реЗрдЬрд╝реА рдореЗрдВ рдЗрд╕ рдЬрд╝рд╛рдкрд┐рдпрди рдмреНрд▓реЙрдЧ рдореЗрдВ рд╣реИрдВред




All Articles